{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "312baf54",
   "metadata": {},
   "outputs": [],
   "source": [
    "# importing libaries\n",
    "\n",
    "import torch\n",
    "import torch.nn as nn\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import scipy.io"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "aabdfc58",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Define the GRU model\n",
    "class GRU(nn.Module):\n",
    "    def __init__(self, input_size, hidden_size, output_size):\n",
    "        super(GRU, self).__init__()\n",
    "\n",
    "        self.hidden_size = hidden_size\n",
    "\n",
    "        self.gru = nn.GRU(input_size, hidden_size, batch_first=True)\n",
    "        self.fc = nn.Linear(hidden_size, output_size)\n",
    "\n",
    "    def forward(self, x, hidden):\n",
    "        output, hidden = self.gru(x, hidden)\n",
    "        output = self.fc(output)\n",
    "        return output, hidden"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "e0e08805",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Toy problem data\n",
    "input_size = 256  # number of columns in a dataset\n",
    "hidden_size = 32  # number of neurons\n",
    "output_size = 256  \n",
    "sequence_length = 160  # number of sequences/ number of rows\n",
    "batch_size = 1\n",
    "num_epochs = 30000"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "18551192",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'__header__': b'MATLAB 5.0 MAT-file Platform: posix, Created on: Thu Jul 20 15:02:48 2023',\n",
       " '__version__': '1.0',\n",
       " '__globals__': [],\n",
       " 'h': array([[0.03949907, 0.03945555, 0.03968762, ..., 0.04081577, 0.04034067,\n",
       "         0.03995187],\n",
       "        [0.03949522, 0.03972834, 0.04007071, ..., 0.0406224 , 0.0405568 ,\n",
       "         0.04021852],\n",
       "        [0.03980837, 0.03966293, 0.04008707, ..., 0.04077249, 0.04050591,\n",
       "         0.04019281],\n",
       "        ...,\n",
       "        [0.04915863, 0.04935256, 0.04961976, ..., 0.04917885, 0.04899574,\n",
       "         0.04881741],\n",
       "        [0.04904458, 0.04916197, 0.04943338, ..., 0.04902097, 0.04897786,\n",
       "         0.04875013],\n",
       "        [0.04913692, 0.04932824, 0.04941899, ..., 0.04888785, 0.0488357 ,\n",
       "         0.04855312]])}"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Load the .mat file\n",
    "v_data = scipy.io.loadmat('v.mat')\n",
    "h_data = scipy.io.loadmat('h.mat')\n",
    "x_data = scipy.io.loadmat('x.mat')\n",
    "h_data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "1d818fb1",
   "metadata": {},
   "outputs": [],
   "source": [
    "x = x_data['X']\n",
    "u = h_data['h']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "61eddbd2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<torch._C.Generator at 0x7f665c025790>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Set random seed for reproducibility\n",
    "torch.manual_seed(50)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "e95482d1",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "test data shape (256,)\n",
      "input data shape (160, 256)\n",
      "Target data shape (160, 256)\n"
     ]
    }
   ],
   "source": [
    "input_data = u[0:160,:]\n",
    "target_data = u[1:161, :]\n",
    "\n",
    "test_data = u[160, :]\n",
    "#test_target = u[161:201, :]\n",
    "\n",
    "print(\"test data shape\", test_data.shape)\n",
    "#print(\"test target shape\", test_target.shape)\n",
    "\n",
    "print(\"input data shape\",input_data.shape)\n",
    "print(\"Target data shape\",target_data.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "45115215",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "input tensor shape torch.Size([1, 160, 256])\n",
      "Target tensor shape torch.Size([1, 160, 256])\n"
     ]
    }
   ],
   "source": [
    "# Convert data to tensors\n",
    "input_tensor = torch.tensor(input_data).view(batch_size, sequence_length, input_size).float()\n",
    "target_tensor = torch.tensor(target_data).view(batch_size, sequence_length, output_size).float()\n",
    "\n",
    "print(\"input tensor shape\",input_tensor.shape)\n",
    "print(\"Target tensor shape\",target_tensor.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "3692033e",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Convert test data to tensors\n",
    "test_tensor = torch.tensor(test_data).view(batch_size, 1, input_size).float()\n",
    "#test_target_tensor = torch.tensor(test_target).view(batch_size, 40, output_size).float()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "592be7b8",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 10/30000, Loss: 0.10032392\n",
      "Epoch: 20/30000, Loss: 0.05626938\n",
      "Epoch: 30/30000, Loss: 0.03072028\n",
      "Epoch: 40/30000, Loss: 0.02170625\n",
      "Epoch: 50/30000, Loss: 0.01283358\n",
      "Epoch: 60/30000, Loss: 0.00681270\n",
      "Epoch: 70/30000, Loss: 0.00357107\n",
      "Epoch: 80/30000, Loss: 0.00191044\n",
      "Epoch: 90/30000, Loss: 0.00125750\n",
      "Epoch: 100/30000, Loss: 0.00100009\n",
      "Epoch: 110/30000, Loss: 0.00086939\n",
      "Epoch: 120/30000, Loss: 0.00079100\n",
      "Epoch: 130/30000, Loss: 0.00074080\n",
      "Epoch: 140/30000, Loss: 0.00070419\n",
      "Epoch: 150/30000, Loss: 0.00067518\n",
      "Epoch: 160/30000, Loss: 0.00065112\n",
      "Epoch: 170/30000, Loss: 0.00063040\n",
      "Epoch: 180/30000, Loss: 0.00061207\n",
      "Epoch: 190/30000, Loss: 0.00059549\n",
      "Epoch: 200/30000, Loss: 0.00058023\n",
      "Epoch: 210/30000, Loss: 0.00056593\n",
      "Epoch: 220/30000, Loss: 0.00055232\n",
      "Epoch: 230/30000, Loss: 0.00053916\n",
      "Epoch: 240/30000, Loss: 0.00052618\n",
      "Epoch: 250/30000, Loss: 0.00051286\n",
      "Epoch: 260/30000, Loss: 0.00049667\n",
      "Epoch: 270/30000, Loss: 0.00048068\n",
      "Epoch: 280/30000, Loss: 0.00046591\n",
      "Epoch: 290/30000, Loss: 0.00045227\n",
      "Epoch: 300/30000, Loss: 0.00043892\n",
      "Epoch: 310/30000, Loss: 0.00042606\n",
      "Epoch: 320/30000, Loss: 0.00050482\n",
      "Epoch: 330/30000, Loss: 0.00042404\n",
      "Epoch: 340/30000, Loss: 0.00041239\n",
      "Epoch: 350/30000, Loss: 0.00038701\n",
      "Epoch: 360/30000, Loss: 0.00036478\n",
      "Epoch: 370/30000, Loss: 0.00034478\n",
      "Epoch: 380/30000, Loss: 0.00032690\n",
      "Epoch: 390/30000, Loss: 0.00031135\n",
      "Epoch: 400/30000, Loss: 0.00029658\n",
      "Epoch: 410/30000, Loss: 0.00028186\n",
      "Epoch: 420/30000, Loss: 0.00026772\n",
      "Epoch: 430/30000, Loss: 0.00025407\n",
      "Epoch: 440/30000, Loss: 0.00024117\n",
      "Epoch: 450/30000, Loss: 0.00032645\n",
      "Epoch: 460/30000, Loss: 0.00023105\n",
      "Epoch: 470/30000, Loss: 0.00025217\n",
      "Epoch: 480/30000, Loss: 0.00019886\n",
      "Epoch: 490/30000, Loss: 0.00019360\n",
      "Epoch: 500/30000, Loss: 0.00017978\n",
      "Epoch: 510/30000, Loss: 0.00017151\n",
      "Epoch: 520/30000, Loss: 0.00016425\n",
      "Epoch: 530/30000, Loss: 0.00015745\n",
      "Epoch: 540/30000, Loss: 0.00015130\n",
      "Epoch: 550/30000, Loss: 0.00014570\n",
      "Epoch: 560/30000, Loss: 0.00014054\n",
      "Epoch: 570/30000, Loss: 0.00013580\n",
      "Epoch: 580/30000, Loss: 0.00013692\n",
      "Epoch: 590/30000, Loss: 0.00017793\n",
      "Epoch: 600/30000, Loss: 0.00015858\n",
      "Epoch: 610/30000, Loss: 0.00012586\n",
      "Epoch: 620/30000, Loss: 0.00015116\n",
      "Epoch: 630/30000, Loss: 0.00012112\n",
      "Epoch: 640/30000, Loss: 0.00011658\n",
      "Epoch: 650/30000, Loss: 0.00012530\n",
      "Epoch: 660/30000, Loss: 0.00011119\n",
      "Epoch: 670/30000, Loss: 0.00010584\n",
      "Epoch: 680/30000, Loss: 0.00010388\n",
      "Epoch: 690/30000, Loss: 0.00010393\n",
      "Epoch: 700/30000, Loss: 0.00049703\n",
      "Epoch: 710/30000, Loss: 0.00011086\n",
      "Epoch: 720/30000, Loss: 0.00011332\n",
      "Epoch: 730/30000, Loss: 0.00010155\n",
      "Epoch: 740/30000, Loss: 0.00009509\n",
      "Epoch: 750/30000, Loss: 0.00009357\n",
      "Epoch: 760/30000, Loss: 0.00009095\n",
      "Epoch: 770/30000, Loss: 0.00008907\n",
      "Epoch: 780/30000, Loss: 0.00008744\n",
      "Epoch: 790/30000, Loss: 0.00008588\n",
      "Epoch: 800/30000, Loss: 0.00008444\n",
      "Epoch: 810/30000, Loss: 0.00008521\n",
      "Epoch: 820/30000, Loss: 0.00073851\n",
      "Epoch: 830/30000, Loss: 0.00016511\n",
      "Epoch: 840/30000, Loss: 0.00013767\n",
      "Epoch: 850/30000, Loss: 0.00008508\n",
      "Epoch: 860/30000, Loss: 0.00008798\n",
      "Epoch: 870/30000, Loss: 0.00008020\n",
      "Epoch: 880/30000, Loss: 0.00007934\n",
      "Epoch: 890/30000, Loss: 0.00007789\n",
      "Epoch: 900/30000, Loss: 0.00007664\n",
      "Epoch: 910/30000, Loss: 0.00007563\n",
      "Epoch: 920/30000, Loss: 0.00007515\n",
      "Epoch: 930/30000, Loss: 0.00012355\n",
      "Epoch: 940/30000, Loss: 0.00010948\n",
      "Epoch: 950/30000, Loss: 0.00011886\n",
      "Epoch: 960/30000, Loss: 0.00007895\n",
      "Epoch: 970/30000, Loss: 0.00007504\n",
      "Epoch: 980/30000, Loss: 0.00007047\n",
      "Epoch: 990/30000, Loss: 0.00006923\n",
      "Epoch: 1000/30000, Loss: 0.00006871\n",
      "Epoch: 1010/30000, Loss: 0.00006801\n",
      "Epoch: 1020/30000, Loss: 0.00013099\n",
      "Epoch: 1030/30000, Loss: 0.00016200\n",
      "Epoch: 1040/30000, Loss: 0.00008482\n",
      "Epoch: 1050/30000, Loss: 0.00006832\n",
      "Epoch: 1060/30000, Loss: 0.00007239\n",
      "Epoch: 1070/30000, Loss: 0.00006525\n",
      "Epoch: 1080/30000, Loss: 0.00006521\n",
      "Epoch: 1090/30000, Loss: 0.00006405\n",
      "Epoch: 1100/30000, Loss: 0.00006324\n",
      "Epoch: 1110/30000, Loss: 0.00006800\n",
      "Epoch: 1120/30000, Loss: 0.00024553\n",
      "Epoch: 1130/30000, Loss: 0.00009579\n",
      "Epoch: 1140/30000, Loss: 0.00007557\n",
      "Epoch: 1150/30000, Loss: 0.00006814\n",
      "Epoch: 1160/30000, Loss: 0.00006544\n",
      "Epoch: 1170/30000, Loss: 0.00006278\n",
      "Epoch: 1180/30000, Loss: 0.00006886\n",
      "Epoch: 1190/30000, Loss: 0.00022217\n",
      "Epoch: 1200/30000, Loss: 0.00009740\n",
      "Epoch: 1210/30000, Loss: 0.00006217\n",
      "Epoch: 1220/30000, Loss: 0.00006009\n",
      "Epoch: 1230/30000, Loss: 0.00005899\n",
      "Epoch: 1240/30000, Loss: 0.00005696\n",
      "Epoch: 1250/30000, Loss: 0.00005869\n",
      "Epoch: 1260/30000, Loss: 0.00008759\n",
      "Epoch: 1270/30000, Loss: 0.00008510\n",
      "Epoch: 1280/30000, Loss: 0.00006891\n",
      "Epoch: 1290/30000, Loss: 0.00006024\n",
      "Epoch: 1300/30000, Loss: 0.00005660\n",
      "Epoch: 1310/30000, Loss: 0.00009396\n",
      "Epoch: 1320/30000, Loss: 0.00015398\n",
      "Epoch: 1330/30000, Loss: 0.00013214\n",
      "Epoch: 1340/30000, Loss: 0.00006465\n",
      "Epoch: 1350/30000, Loss: 0.00006019\n",
      "Epoch: 1360/30000, Loss: 0.00005599\n",
      "Epoch: 1370/30000, Loss: 0.00005347\n",
      "Epoch: 1380/30000, Loss: 0.00005505\n",
      "Epoch: 1390/30000, Loss: 0.00009724\n",
      "Epoch: 1400/30000, Loss: 0.00005317\n",
      "Epoch: 1410/30000, Loss: 0.00005229\n",
      "Epoch: 1420/30000, Loss: 0.00005048\n",
      "Epoch: 1430/30000, Loss: 0.00004852\n",
      "Epoch: 1440/30000, Loss: 0.00005150\n",
      "Epoch: 1450/30000, Loss: 0.00006947\n",
      "Epoch: 1460/30000, Loss: 0.00005531\n",
      "Epoch: 1470/30000, Loss: 0.00004781\n",
      "Epoch: 1480/30000, Loss: 0.00006402\n",
      "Epoch: 1490/30000, Loss: 0.00019933\n",
      "Epoch: 1500/30000, Loss: 0.00017385\n",
      "Epoch: 1510/30000, Loss: 0.00007994\n",
      "Epoch: 1520/30000, Loss: 0.00004882\n",
      "Epoch: 1530/30000, Loss: 0.00004705\n",
      "Epoch: 1540/30000, Loss: 0.00004429\n",
      "Epoch: 1550/30000, Loss: 0.00004361\n",
      "Epoch: 1560/30000, Loss: 0.00005206\n",
      "Epoch: 1570/30000, Loss: 0.00004939\n",
      "Epoch: 1580/30000, Loss: 0.00004356\n",
      "Epoch: 1590/30000, Loss: 0.00004065\n",
      "Epoch: 1600/30000, Loss: 0.00004439\n",
      "Epoch: 1610/30000, Loss: 0.00041870\n",
      "Epoch: 1620/30000, Loss: 0.00034400\n",
      "Epoch: 1630/30000, Loss: 0.00013082\n",
      "Epoch: 1640/30000, Loss: 0.00007205\n",
      "Epoch: 1650/30000, Loss: 0.00005567\n",
      "Epoch: 1660/30000, Loss: 0.00004204\n",
      "Epoch: 1670/30000, Loss: 0.00004065\n",
      "Epoch: 1680/30000, Loss: 0.00003851\n",
      "Epoch: 1690/30000, Loss: 0.00003763\n",
      "Epoch: 1700/30000, Loss: 0.00003670\n",
      "Epoch: 1710/30000, Loss: 0.00003600\n",
      "Epoch: 1720/30000, Loss: 0.00004076\n",
      "Epoch: 1730/30000, Loss: 0.00004386\n",
      "Epoch: 1740/30000, Loss: 0.00003867\n",
      "Epoch: 1750/30000, Loss: 0.00003460\n",
      "Epoch: 1760/30000, Loss: 0.00003350\n",
      "Epoch: 1770/30000, Loss: 0.00003274\n",
      "Epoch: 1780/30000, Loss: 0.00003324\n",
      "Epoch: 1790/30000, Loss: 0.00056127\n",
      "Epoch: 1800/30000, Loss: 0.00004698\n",
      "Epoch: 1810/30000, Loss: 0.00005927\n",
      "Epoch: 1820/30000, Loss: 0.00003989\n",
      "Epoch: 1830/30000, Loss: 0.00003443\n",
      "Epoch: 1840/30000, Loss: 0.00008176\n",
      "Epoch: 1850/30000, Loss: 0.00003574\n",
      "Epoch: 1860/30000, Loss: 0.00004264\n",
      "Epoch: 1870/30000, Loss: 0.00003572\n",
      "Epoch: 1880/30000, Loss: 0.00003072\n",
      "Epoch: 1890/30000, Loss: 0.00002942\n",
      "Epoch: 1900/30000, Loss: 0.00002891\n",
      "Epoch: 1910/30000, Loss: 0.00002840\n",
      "Epoch: 1920/30000, Loss: 0.00003209\n",
      "Epoch: 1930/30000, Loss: 0.00005061\n",
      "Epoch: 1940/30000, Loss: 0.00003692\n",
      "Epoch: 1950/30000, Loss: 0.00003007\n",
      "Epoch: 1960/30000, Loss: 0.00002666\n",
      "Epoch: 1970/30000, Loss: 0.00002698\n",
      "Epoch: 1980/30000, Loss: 0.00003646\n",
      "Epoch: 1990/30000, Loss: 0.00673735\n",
      "Epoch: 2000/30000, Loss: 0.00381289\n",
      "Epoch: 2010/30000, Loss: 0.00142122\n",
      "Epoch: 2020/30000, Loss: 0.00060815\n",
      "Epoch: 2030/30000, Loss: 0.00030052\n",
      "Epoch: 2040/30000, Loss: 0.00016350\n",
      "Epoch: 2050/30000, Loss: 0.00011848\n",
      "Epoch: 2060/30000, Loss: 0.00009619\n",
      "Epoch: 2070/30000, Loss: 0.00008622\n",
      "Epoch: 2080/30000, Loss: 0.00007929\n",
      "Epoch: 2090/30000, Loss: 0.00007440\n",
      "Epoch: 2100/30000, Loss: 0.00007006\n",
      "Epoch: 2110/30000, Loss: 0.00006623\n",
      "Epoch: 2120/30000, Loss: 0.00006279\n",
      "Epoch: 2130/30000, Loss: 0.00005978\n",
      "Epoch: 2140/30000, Loss: 0.00005717\n",
      "Epoch: 2150/30000, Loss: 0.00005491\n",
      "Epoch: 2160/30000, Loss: 0.00005291\n",
      "Epoch: 2170/30000, Loss: 0.00005111\n",
      "Epoch: 2180/30000, Loss: 0.00005058\n",
      "Epoch: 2190/30000, Loss: 0.00004942\n",
      "Epoch: 2200/30000, Loss: 0.00004956\n",
      "Epoch: 2210/30000, Loss: 0.00004521\n",
      "Epoch: 2220/30000, Loss: 0.00004412\n",
      "Epoch: 2230/30000, Loss: 0.00004288\n",
      "Epoch: 2240/30000, Loss: 0.00004163\n",
      "Epoch: 2250/30000, Loss: 0.00004055\n",
      "Epoch: 2260/30000, Loss: 0.00004010\n",
      "Epoch: 2270/30000, Loss: 0.00003984\n",
      "Epoch: 2280/30000, Loss: 0.00003927\n",
      "Epoch: 2290/30000, Loss: 0.00003794\n",
      "Epoch: 2300/30000, Loss: 0.00003862\n",
      "Epoch: 2310/30000, Loss: 0.00003655\n",
      "Epoch: 2320/30000, Loss: 0.00003631\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 2330/30000, Loss: 0.00003347\n",
      "Epoch: 2340/30000, Loss: 0.00003325\n",
      "Epoch: 2350/30000, Loss: 0.00003153\n",
      "Epoch: 2360/30000, Loss: 0.00003089\n",
      "Epoch: 2370/30000, Loss: 0.00003076\n",
      "Epoch: 2380/30000, Loss: 0.00002845\n",
      "Epoch: 2390/30000, Loss: 0.00002770\n",
      "Epoch: 2400/30000, Loss: 0.00003045\n",
      "Epoch: 2410/30000, Loss: 0.00002863\n",
      "Epoch: 2420/30000, Loss: 0.00002979\n",
      "Epoch: 2430/30000, Loss: 0.00002600\n",
      "Epoch: 2440/30000, Loss: 0.00002528\n",
      "Epoch: 2450/30000, Loss: 0.00002324\n",
      "Epoch: 2460/30000, Loss: 0.00002191\n",
      "Epoch: 2470/30000, Loss: 0.00002094\n",
      "Epoch: 2480/30000, Loss: 0.00002130\n",
      "Epoch: 2490/30000, Loss: 0.00002054\n",
      "Epoch: 2500/30000, Loss: 0.00002111\n",
      "Epoch: 2510/30000, Loss: 0.00002483\n",
      "Epoch: 2520/30000, Loss: 0.00002072\n",
      "Epoch: 2530/30000, Loss: 0.00001986\n",
      "Epoch: 2540/30000, Loss: 0.00001845\n",
      "Epoch: 2550/30000, Loss: 0.00001776\n",
      "Epoch: 2560/30000, Loss: 0.00001785\n",
      "Epoch: 2570/30000, Loss: 0.00002091\n",
      "Epoch: 2580/30000, Loss: 0.00002142\n",
      "Epoch: 2590/30000, Loss: 0.00002107\n",
      "Epoch: 2600/30000, Loss: 0.00001717\n",
      "Epoch: 2610/30000, Loss: 0.00001643\n",
      "Epoch: 2620/30000, Loss: 0.00001604\n",
      "Epoch: 2630/30000, Loss: 0.00001748\n",
      "Epoch: 2640/30000, Loss: 0.00002162\n",
      "Epoch: 2650/30000, Loss: 0.00002401\n",
      "Epoch: 2660/30000, Loss: 0.00001560\n",
      "Epoch: 2670/30000, Loss: 0.00001566\n",
      "Epoch: 2680/30000, Loss: 0.00001548\n",
      "Epoch: 2690/30000, Loss: 0.00002497\n",
      "Epoch: 2700/30000, Loss: 0.00020273\n",
      "Epoch: 2710/30000, Loss: 0.00007313\n",
      "Epoch: 2720/30000, Loss: 0.00003052\n",
      "Epoch: 2730/30000, Loss: 0.00001482\n",
      "Epoch: 2740/30000, Loss: 0.00001426\n",
      "Epoch: 2750/30000, Loss: 0.00001379\n",
      "Epoch: 2760/30000, Loss: 0.00001330\n",
      "Epoch: 2770/30000, Loss: 0.00001344\n",
      "Epoch: 2780/30000, Loss: 0.00001823\n",
      "Epoch: 2790/30000, Loss: 0.00016649\n",
      "Epoch: 2800/30000, Loss: 0.00005243\n",
      "Epoch: 2810/30000, Loss: 0.00003231\n",
      "Epoch: 2820/30000, Loss: 0.00002242\n",
      "Epoch: 2830/30000, Loss: 0.00002978\n",
      "Epoch: 2840/30000, Loss: 0.00008327\n",
      "Epoch: 2850/30000, Loss: 0.00001326\n",
      "Epoch: 2860/30000, Loss: 0.00001980\n",
      "Epoch: 2870/30000, Loss: 0.00001641\n",
      "Epoch: 2880/30000, Loss: 0.00001254\n",
      "Epoch: 2890/30000, Loss: 0.00001208\n",
      "Epoch: 2900/30000, Loss: 0.00001495\n",
      "Epoch: 2910/30000, Loss: 0.00008699\n",
      "Epoch: 2920/30000, Loss: 0.00005219\n",
      "Epoch: 2930/30000, Loss: 0.00011890\n",
      "Epoch: 2940/30000, Loss: 0.00004967\n",
      "Epoch: 2950/30000, Loss: 0.00002168\n",
      "Epoch: 2960/30000, Loss: 0.00001569\n",
      "Epoch: 2970/30000, Loss: 0.00001282\n",
      "Epoch: 2980/30000, Loss: 0.00001189\n",
      "Epoch: 2990/30000, Loss: 0.00001208\n",
      "Epoch: 3000/30000, Loss: 0.00001424\n",
      "Epoch: 3010/30000, Loss: 0.00001411\n",
      "Epoch: 3020/30000, Loss: 0.00007780\n",
      "Epoch: 3030/30000, Loss: 0.00008677\n",
      "Epoch: 3040/30000, Loss: 0.00002775\n",
      "Epoch: 3050/30000, Loss: 0.00002557\n",
      "Epoch: 3060/30000, Loss: 0.00001339\n",
      "Epoch: 3070/30000, Loss: 0.00001486\n",
      "Epoch: 3080/30000, Loss: 0.00001505\n",
      "Epoch: 3090/30000, Loss: 0.00003850\n",
      "Epoch: 3100/30000, Loss: 0.00016871\n",
      "Epoch: 3110/30000, Loss: 0.00005650\n",
      "Epoch: 3120/30000, Loss: 0.00002888\n",
      "Epoch: 3130/30000, Loss: 0.00003487\n",
      "Epoch: 3140/30000, Loss: 0.00014901\n",
      "Epoch: 3150/30000, Loss: 0.00004204\n",
      "Epoch: 3160/30000, Loss: 0.00002246\n",
      "Epoch: 3170/30000, Loss: 0.00001667\n",
      "Epoch: 3180/30000, Loss: 0.00001278\n",
      "Epoch: 3190/30000, Loss: 0.00001127\n",
      "Epoch: 3200/30000, Loss: 0.00001070\n",
      "Epoch: 3210/30000, Loss: 0.00001121\n",
      "Epoch: 3220/30000, Loss: 0.00009060\n",
      "Epoch: 3230/30000, Loss: 0.00003526\n",
      "Epoch: 3240/30000, Loss: 0.00012253\n",
      "Epoch: 3250/30000, Loss: 0.00004857\n",
      "Epoch: 3260/30000, Loss: 0.00002519\n",
      "Epoch: 3270/30000, Loss: 0.00001530\n",
      "Epoch: 3280/30000, Loss: 0.00001233\n",
      "Epoch: 3290/30000, Loss: 0.00001090\n",
      "Epoch: 3300/30000, Loss: 0.00001249\n",
      "Epoch: 3310/30000, Loss: 0.00014908\n",
      "Epoch: 3320/30000, Loss: 0.00010974\n",
      "Epoch: 3330/30000, Loss: 0.00002613\n",
      "Epoch: 3340/30000, Loss: 0.00002223\n",
      "Epoch: 3350/30000, Loss: 0.00001335\n",
      "Epoch: 3360/30000, Loss: 0.00001231\n",
      "Epoch: 3370/30000, Loss: 0.00001125\n",
      "Epoch: 3380/30000, Loss: 0.00001062\n",
      "Epoch: 3390/30000, Loss: 0.00001028\n",
      "Epoch: 3400/30000, Loss: 0.00001008\n",
      "Epoch: 3410/30000, Loss: 0.00001036\n",
      "Epoch: 3420/30000, Loss: 0.00001110\n",
      "Epoch: 3430/30000, Loss: 0.00005355\n",
      "Epoch: 3440/30000, Loss: 0.00015038\n",
      "Epoch: 3450/30000, Loss: 0.00008435\n",
      "Epoch: 3460/30000, Loss: 0.00006807\n",
      "Epoch: 3470/30000, Loss: 0.00003280\n",
      "Epoch: 3480/30000, Loss: 0.00001643\n",
      "Epoch: 3490/30000, Loss: 0.00001417\n",
      "Epoch: 3500/30000, Loss: 0.00001198\n",
      "Epoch: 3510/30000, Loss: 0.00001112\n",
      "Epoch: 3520/30000, Loss: 0.00001137\n",
      "Epoch: 3530/30000, Loss: 0.00001014\n",
      "Epoch: 3540/30000, Loss: 0.00000991\n",
      "Epoch: 3550/30000, Loss: 0.00001000\n",
      "Epoch: 3560/30000, Loss: 0.00001341\n",
      "Epoch: 3570/30000, Loss: 0.00004101\n",
      "Epoch: 3580/30000, Loss: 0.00012122\n",
      "Epoch: 3590/30000, Loss: 0.00029370\n",
      "Epoch: 3600/30000, Loss: 0.00007960\n",
      "Epoch: 3610/30000, Loss: 0.00001806\n",
      "Epoch: 3620/30000, Loss: 0.00001519\n",
      "Epoch: 3630/30000, Loss: 0.00001371\n",
      "Epoch: 3640/30000, Loss: 0.00001144\n",
      "Epoch: 3650/30000, Loss: 0.00001039\n",
      "Epoch: 3660/30000, Loss: 0.00000994\n",
      "Epoch: 3670/30000, Loss: 0.00000967\n",
      "Epoch: 3680/30000, Loss: 0.00001043\n",
      "Epoch: 3690/30000, Loss: 0.00017820\n",
      "Epoch: 3700/30000, Loss: 0.00028992\n",
      "Epoch: 3710/30000, Loss: 0.00007428\n",
      "Epoch: 3720/30000, Loss: 0.00003287\n",
      "Epoch: 3730/30000, Loss: 0.00002216\n",
      "Epoch: 3740/30000, Loss: 0.00001665\n",
      "Epoch: 3750/30000, Loss: 0.00001339\n",
      "Epoch: 3760/30000, Loss: 0.00001121\n",
      "Epoch: 3770/30000, Loss: 0.00001048\n",
      "Epoch: 3780/30000, Loss: 0.00001085\n",
      "Epoch: 3790/30000, Loss: 0.00003037\n",
      "Epoch: 3800/30000, Loss: 0.00038612\n",
      "Epoch: 3810/30000, Loss: 0.00008309\n",
      "Epoch: 3820/30000, Loss: 0.00002159\n",
      "Epoch: 3830/30000, Loss: 0.00002109\n",
      "Epoch: 3840/30000, Loss: 0.00002603\n",
      "Epoch: 3850/30000, Loss: 0.00022663\n",
      "Epoch: 3860/30000, Loss: 0.00002337\n",
      "Epoch: 3870/30000, Loss: 0.00002027\n",
      "Epoch: 3880/30000, Loss: 0.00001392\n",
      "Epoch: 3890/30000, Loss: 0.00001163\n",
      "Epoch: 3900/30000, Loss: 0.00001331\n",
      "Epoch: 3910/30000, Loss: 0.00001368\n",
      "Epoch: 3920/30000, Loss: 0.00001462\n",
      "Epoch: 3930/30000, Loss: 0.00001315\n",
      "Epoch: 3940/30000, Loss: 0.00001246\n",
      "Epoch: 3950/30000, Loss: 0.00025009\n",
      "Epoch: 3960/30000, Loss: 0.00037671\n",
      "Epoch: 3970/30000, Loss: 0.00013199\n",
      "Epoch: 3980/30000, Loss: 0.00005035\n",
      "Epoch: 3990/30000, Loss: 0.00002726\n",
      "Epoch: 4000/30000, Loss: 0.00001656\n",
      "Epoch: 4010/30000, Loss: 0.00001281\n",
      "Epoch: 4020/30000, Loss: 0.00001124\n",
      "Epoch: 4030/30000, Loss: 0.00001073\n",
      "Epoch: 4040/30000, Loss: 0.00001111\n",
      "Epoch: 4050/30000, Loss: 0.00001120\n",
      "Epoch: 4060/30000, Loss: 0.00001097\n",
      "Epoch: 4070/30000, Loss: 0.00001493\n",
      "Epoch: 4080/30000, Loss: 0.00017162\n",
      "Epoch: 4090/30000, Loss: 0.00007795\n",
      "Epoch: 4100/30000, Loss: 0.00005654\n",
      "Epoch: 4110/30000, Loss: 0.00004666\n",
      "Epoch: 4120/30000, Loss: 0.00002168\n",
      "Epoch: 4130/30000, Loss: 0.00001173\n",
      "Epoch: 4140/30000, Loss: 0.00001087\n",
      "Epoch: 4150/30000, Loss: 0.00001710\n",
      "Epoch: 4160/30000, Loss: 0.00012008\n",
      "Epoch: 4170/30000, Loss: 0.00010100\n",
      "Epoch: 4180/30000, Loss: 0.00004994\n",
      "Epoch: 4190/30000, Loss: 0.00002019\n",
      "Epoch: 4200/30000, Loss: 0.00001557\n",
      "Epoch: 4210/30000, Loss: 0.00001254\n",
      "Epoch: 4220/30000, Loss: 0.00001190\n",
      "Epoch: 4230/30000, Loss: 0.00001000\n",
      "Epoch: 4240/30000, Loss: 0.00001015\n",
      "Epoch: 4250/30000, Loss: 0.00001194\n",
      "Epoch: 4260/30000, Loss: 0.00001486\n",
      "Epoch: 4270/30000, Loss: 0.00002951\n",
      "Epoch: 4280/30000, Loss: 0.00030357\n",
      "Epoch: 4290/30000, Loss: 0.00010389\n",
      "Epoch: 4300/30000, Loss: 0.00003863\n",
      "Epoch: 4310/30000, Loss: 0.00001834\n",
      "Epoch: 4320/30000, Loss: 0.00001425\n",
      "Epoch: 4330/30000, Loss: 0.00004321\n",
      "Epoch: 4340/30000, Loss: 0.00022769\n",
      "Epoch: 4350/30000, Loss: 0.00006657\n",
      "Epoch: 4360/30000, Loss: 0.00002500\n",
      "Epoch: 4370/30000, Loss: 0.00001390\n",
      "Epoch: 4380/30000, Loss: 0.00001233\n",
      "Epoch: 4390/30000, Loss: 0.00001490\n",
      "Epoch: 4400/30000, Loss: 0.00001363\n",
      "Epoch: 4410/30000, Loss: 0.00002255\n",
      "Epoch: 4420/30000, Loss: 0.00003049\n",
      "Epoch: 4430/30000, Loss: 0.00063945\n",
      "Epoch: 4440/30000, Loss: 0.00051665\n",
      "Epoch: 4450/30000, Loss: 0.00016135\n",
      "Epoch: 4460/30000, Loss: 0.00003416\n",
      "Epoch: 4470/30000, Loss: 0.00002987\n",
      "Epoch: 4480/30000, Loss: 0.00001433\n",
      "Epoch: 4490/30000, Loss: 0.00001129\n",
      "Epoch: 4500/30000, Loss: 0.00001133\n",
      "Epoch: 4510/30000, Loss: 0.00001140\n",
      "Epoch: 4520/30000, Loss: 0.00001140\n",
      "Epoch: 4530/30000, Loss: 0.00001395\n",
      "Epoch: 4540/30000, Loss: 0.00001403\n",
      "Epoch: 4550/30000, Loss: 0.00001167\n",
      "Epoch: 4560/30000, Loss: 0.00001250\n",
      "Epoch: 4570/30000, Loss: 0.00001539\n",
      "Epoch: 4580/30000, Loss: 0.00003714\n",
      "Epoch: 4590/30000, Loss: 0.00037100\n",
      "Epoch: 4600/30000, Loss: 0.00007936\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 4610/30000, Loss: 0.00002033\n",
      "Epoch: 4620/30000, Loss: 0.00002276\n",
      "Epoch: 4630/30000, Loss: 0.00001533\n",
      "Epoch: 4640/30000, Loss: 0.00002367\n",
      "Epoch: 4650/30000, Loss: 0.00010526\n",
      "Epoch: 4660/30000, Loss: 0.00003520\n",
      "Epoch: 4670/30000, Loss: 0.00002297\n",
      "Epoch: 4680/30000, Loss: 0.00001617\n",
      "Epoch: 4690/30000, Loss: 0.00001125\n",
      "Epoch: 4700/30000, Loss: 0.00001186\n",
      "Epoch: 4710/30000, Loss: 0.00002876\n",
      "Epoch: 4720/30000, Loss: 0.00019874\n",
      "Epoch: 4730/30000, Loss: 0.00009807\n",
      "Epoch: 4740/30000, Loss: 0.00007929\n",
      "Epoch: 4750/30000, Loss: 0.00002955\n",
      "Epoch: 4760/30000, Loss: 0.00002112\n",
      "Epoch: 4770/30000, Loss: 0.00001337\n",
      "Epoch: 4780/30000, Loss: 0.00001123\n",
      "Epoch: 4790/30000, Loss: 0.00001010\n",
      "Epoch: 4800/30000, Loss: 0.00001702\n",
      "Epoch: 4810/30000, Loss: 0.00018434\n",
      "Epoch: 4820/30000, Loss: 0.00007924\n",
      "Epoch: 4830/30000, Loss: 0.00004371\n",
      "Epoch: 4840/30000, Loss: 0.00001928\n",
      "Epoch: 4850/30000, Loss: 0.00001701\n",
      "Epoch: 4860/30000, Loss: 0.00001473\n",
      "Epoch: 4870/30000, Loss: 0.00002163\n",
      "Epoch: 4880/30000, Loss: 0.00008147\n",
      "Epoch: 4890/30000, Loss: 0.00008463\n",
      "Epoch: 4900/30000, Loss: 0.00004209\n",
      "Epoch: 4910/30000, Loss: 0.00002016\n",
      "Epoch: 4920/30000, Loss: 0.00010803\n",
      "Epoch: 4930/30000, Loss: 0.00005778\n",
      "Epoch: 4940/30000, Loss: 0.00003003\n",
      "Epoch: 4950/30000, Loss: 0.00010314\n",
      "Epoch: 4960/30000, Loss: 0.00002932\n",
      "Epoch: 4970/30000, Loss: 0.00004490\n",
      "Epoch: 4980/30000, Loss: 0.00002477\n",
      "Epoch: 4990/30000, Loss: 0.00001140\n",
      "Epoch: 5000/30000, Loss: 0.00001141\n",
      "Epoch: 5010/30000, Loss: 0.00001305\n",
      "Epoch: 5020/30000, Loss: 0.00002697\n",
      "Epoch: 5030/30000, Loss: 0.00018741\n",
      "Epoch: 5040/30000, Loss: 0.00015464\n",
      "Epoch: 5050/30000, Loss: 0.00003860\n",
      "Epoch: 5060/30000, Loss: 0.00001938\n",
      "Epoch: 5070/30000, Loss: 0.00001211\n",
      "Epoch: 5080/30000, Loss: 0.00001024\n",
      "Epoch: 5090/30000, Loss: 0.00001418\n",
      "Epoch: 5100/30000, Loss: 0.00009082\n",
      "Epoch: 5110/30000, Loss: 0.00017878\n",
      "Epoch: 5120/30000, Loss: 0.00005392\n",
      "Epoch: 5130/30000, Loss: 0.00002152\n",
      "Epoch: 5140/30000, Loss: 0.00001523\n",
      "Epoch: 5150/30000, Loss: 0.00001164\n",
      "Epoch: 5160/30000, Loss: 0.00001731\n",
      "Epoch: 5170/30000, Loss: 0.00008782\n",
      "Epoch: 5180/30000, Loss: 0.00002378\n",
      "Epoch: 5190/30000, Loss: 0.00002939\n",
      "Epoch: 5200/30000, Loss: 0.00006926\n",
      "Epoch: 5210/30000, Loss: 0.00007784\n",
      "Epoch: 5220/30000, Loss: 0.00002292\n",
      "Epoch: 5230/30000, Loss: 0.00003193\n",
      "Epoch: 5240/30000, Loss: 0.00004746\n",
      "Epoch: 5250/30000, Loss: 0.00002932\n",
      "Epoch: 5260/30000, Loss: 0.00010035\n",
      "Epoch: 5270/30000, Loss: 0.00008666\n",
      "Epoch: 5280/30000, Loss: 0.00002960\n",
      "Epoch: 5290/30000, Loss: 0.00002230\n",
      "Epoch: 5300/30000, Loss: 0.00001745\n",
      "Epoch: 5310/30000, Loss: 0.00008159\n",
      "Epoch: 5320/30000, Loss: 0.00011512\n",
      "Epoch: 5330/30000, Loss: 0.00006871\n",
      "Epoch: 5340/30000, Loss: 0.00002937\n",
      "Epoch: 5350/30000, Loss: 0.00001747\n",
      "Epoch: 5360/30000, Loss: 0.00001787\n",
      "Epoch: 5370/30000, Loss: 0.00008794\n",
      "Epoch: 5380/30000, Loss: 0.00006544\n",
      "Epoch: 5390/30000, Loss: 0.00015350\n",
      "Epoch: 5400/30000, Loss: 0.00002217\n",
      "Epoch: 5410/30000, Loss: 0.00001949\n",
      "Epoch: 5420/30000, Loss: 0.00001833\n",
      "Epoch: 5430/30000, Loss: 0.00001376\n",
      "Epoch: 5440/30000, Loss: 0.00002527\n",
      "Epoch: 5450/30000, Loss: 0.00011536\n",
      "Epoch: 5460/30000, Loss: 0.00014172\n",
      "Epoch: 5470/30000, Loss: 0.00004356\n",
      "Epoch: 5480/30000, Loss: 0.00002504\n",
      "Epoch: 5490/30000, Loss: 0.00002057\n",
      "Epoch: 5500/30000, Loss: 0.00004220\n",
      "Epoch: 5510/30000, Loss: 0.00014536\n",
      "Epoch: 5520/30000, Loss: 0.00002649\n",
      "Epoch: 5530/30000, Loss: 0.00002866\n",
      "Epoch: 5540/30000, Loss: 0.00001472\n",
      "Epoch: 5550/30000, Loss: 0.00002277\n",
      "Epoch: 5560/30000, Loss: 0.00011866\n",
      "Epoch: 5570/30000, Loss: 0.00018721\n",
      "Epoch: 5580/30000, Loss: 0.00007766\n",
      "Epoch: 5590/30000, Loss: 0.00003025\n",
      "Epoch: 5600/30000, Loss: 0.00001709\n",
      "Epoch: 5610/30000, Loss: 0.00001109\n",
      "Epoch: 5620/30000, Loss: 0.00001084\n",
      "Epoch: 5630/30000, Loss: 0.00001741\n",
      "Epoch: 5640/30000, Loss: 0.00006867\n",
      "Epoch: 5650/30000, Loss: 0.00024844\n",
      "Epoch: 5660/30000, Loss: 0.00009267\n",
      "Epoch: 5670/30000, Loss: 0.00003258\n",
      "Epoch: 5680/30000, Loss: 0.00001597\n",
      "Epoch: 5690/30000, Loss: 0.00001076\n",
      "Epoch: 5700/30000, Loss: 0.00000998\n",
      "Epoch: 5710/30000, Loss: 0.00001379\n",
      "Epoch: 5720/30000, Loss: 0.00003813\n",
      "Epoch: 5730/30000, Loss: 0.00022821\n",
      "Epoch: 5740/30000, Loss: 0.00010126\n",
      "Epoch: 5750/30000, Loss: 0.00004398\n",
      "Epoch: 5760/30000, Loss: 0.00001702\n",
      "Epoch: 5770/30000, Loss: 0.00001128\n",
      "Epoch: 5780/30000, Loss: 0.00000910\n",
      "Epoch: 5790/30000, Loss: 0.00000716\n",
      "Epoch: 5800/30000, Loss: 0.00000738\n",
      "Epoch: 5810/30000, Loss: 0.00003702\n",
      "Epoch: 5820/30000, Loss: 0.00058983\n",
      "Epoch: 5830/30000, Loss: 0.00011861\n",
      "Epoch: 5840/30000, Loss: 0.00003580\n",
      "Epoch: 5850/30000, Loss: 0.00002011\n",
      "Epoch: 5860/30000, Loss: 0.00001285\n",
      "Epoch: 5870/30000, Loss: 0.00001783\n",
      "Epoch: 5880/30000, Loss: 0.00003817\n",
      "Epoch: 5890/30000, Loss: 0.00004111\n",
      "Epoch: 5900/30000, Loss: 0.00001402\n",
      "Epoch: 5910/30000, Loss: 0.00000865\n",
      "Epoch: 5920/30000, Loss: 0.00000643\n",
      "Epoch: 5930/30000, Loss: 0.00000723\n",
      "Epoch: 5940/30000, Loss: 0.00010046\n",
      "Epoch: 5950/30000, Loss: 0.00009009\n",
      "Epoch: 5960/30000, Loss: 0.00004368\n",
      "Epoch: 5970/30000, Loss: 0.00006222\n",
      "Epoch: 5980/30000, Loss: 0.00006287\n",
      "Epoch: 5990/30000, Loss: 0.00002919\n",
      "Epoch: 6000/30000, Loss: 0.00000900\n",
      "Epoch: 6010/30000, Loss: 0.00001100\n",
      "Epoch: 6020/30000, Loss: 0.00000950\n",
      "Epoch: 6030/30000, Loss: 0.00003241\n",
      "Epoch: 6040/30000, Loss: 0.00023955\n",
      "Epoch: 6050/30000, Loss: 0.00005481\n",
      "Epoch: 6060/30000, Loss: 0.00002265\n",
      "Epoch: 6070/30000, Loss: 0.00001287\n",
      "Epoch: 6080/30000, Loss: 0.00001250\n",
      "Epoch: 6090/30000, Loss: 0.00002749\n",
      "Epoch: 6100/30000, Loss: 0.00016684\n",
      "Epoch: 6110/30000, Loss: 0.00010096\n",
      "Epoch: 6120/30000, Loss: 0.00005482\n",
      "Epoch: 6130/30000, Loss: 0.00001256\n",
      "Epoch: 6140/30000, Loss: 0.00001028\n",
      "Epoch: 6150/30000, Loss: 0.00003792\n",
      "Epoch: 6160/30000, Loss: 0.00022189\n",
      "Epoch: 6170/30000, Loss: 0.00007177\n",
      "Epoch: 6180/30000, Loss: 0.00003345\n",
      "Epoch: 6190/30000, Loss: 0.00001644\n",
      "Epoch: 6200/30000, Loss: 0.00002579\n",
      "Epoch: 6210/30000, Loss: 0.00019858\n",
      "Epoch: 6220/30000, Loss: 0.00002435\n",
      "Epoch: 6230/30000, Loss: 0.00002307\n",
      "Epoch: 6240/30000, Loss: 0.00001431\n",
      "Epoch: 6250/30000, Loss: 0.00003739\n",
      "Epoch: 6260/30000, Loss: 0.00013511\n",
      "Epoch: 6270/30000, Loss: 0.00001875\n",
      "Epoch: 6280/30000, Loss: 0.00001707\n",
      "Epoch: 6290/30000, Loss: 0.00001566\n",
      "Epoch: 6300/30000, Loss: 0.00002383\n",
      "Epoch: 6310/30000, Loss: 0.00002007\n",
      "Epoch: 6320/30000, Loss: 0.00008733\n",
      "Epoch: 6330/30000, Loss: 0.00018142\n",
      "Epoch: 6340/30000, Loss: 0.00007209\n",
      "Epoch: 6350/30000, Loss: 0.00004438\n",
      "Epoch: 6360/30000, Loss: 0.00002376\n",
      "Epoch: 6370/30000, Loss: 0.00001243\n",
      "Epoch: 6380/30000, Loss: 0.00000904\n",
      "Epoch: 6390/30000, Loss: 0.00000864\n",
      "Epoch: 6400/30000, Loss: 0.00001587\n",
      "Epoch: 6410/30000, Loss: 0.00002537\n",
      "Epoch: 6420/30000, Loss: 0.00004324\n",
      "Epoch: 6430/30000, Loss: 0.00014554\n",
      "Epoch: 6440/30000, Loss: 0.00007896\n",
      "Epoch: 6450/30000, Loss: 0.00003411\n",
      "Epoch: 6460/30000, Loss: 0.00001172\n",
      "Epoch: 6470/30000, Loss: 0.00000757\n",
      "Epoch: 6480/30000, Loss: 0.00000775\n",
      "Epoch: 6490/30000, Loss: 0.00005329\n",
      "Epoch: 6500/30000, Loss: 0.00032060\n",
      "Epoch: 6510/30000, Loss: 0.00012601\n",
      "Epoch: 6520/30000, Loss: 0.00003253\n",
      "Epoch: 6530/30000, Loss: 0.00001355\n",
      "Epoch: 6540/30000, Loss: 0.00000919\n",
      "Epoch: 6550/30000, Loss: 0.00000911\n",
      "Epoch: 6560/30000, Loss: 0.00000973\n",
      "Epoch: 6570/30000, Loss: 0.00001589\n",
      "Epoch: 6580/30000, Loss: 0.00006791\n",
      "Epoch: 6590/30000, Loss: 0.00010031\n",
      "Epoch: 6600/30000, Loss: 0.00001681\n",
      "Epoch: 6610/30000, Loss: 0.00002014\n",
      "Epoch: 6620/30000, Loss: 0.00003747\n",
      "Epoch: 6630/30000, Loss: 0.00008072\n",
      "Epoch: 6640/30000, Loss: 0.00001323\n",
      "Epoch: 6650/30000, Loss: 0.00002250\n",
      "Epoch: 6660/30000, Loss: 0.00006507\n",
      "Epoch: 6670/30000, Loss: 0.00008087\n",
      "Epoch: 6680/30000, Loss: 0.00008822\n",
      "Epoch: 6690/30000, Loss: 0.00005043\n",
      "Epoch: 6700/30000, Loss: 0.00005136\n",
      "Epoch: 6710/30000, Loss: 0.00001648\n",
      "Epoch: 6720/30000, Loss: 0.00001226\n",
      "Epoch: 6730/30000, Loss: 0.00001124\n",
      "Epoch: 6740/30000, Loss: 0.00006205\n",
      "Epoch: 6750/30000, Loss: 0.00018981\n",
      "Epoch: 6760/30000, Loss: 0.00006976\n",
      "Epoch: 6770/30000, Loss: 0.00002896\n",
      "Epoch: 6780/30000, Loss: 0.00001308\n",
      "Epoch: 6790/30000, Loss: 0.00001693\n",
      "Epoch: 6800/30000, Loss: 0.00002665\n",
      "Epoch: 6810/30000, Loss: 0.00008002\n",
      "Epoch: 6820/30000, Loss: 0.00009361\n",
      "Epoch: 6830/30000, Loss: 0.00002504\n",
      "Epoch: 6840/30000, Loss: 0.00001901\n",
      "Epoch: 6850/30000, Loss: 0.00002737\n",
      "Epoch: 6860/30000, Loss: 0.00014458\n",
      "Epoch: 6870/30000, Loss: 0.00005027\n",
      "Epoch: 6880/30000, Loss: 0.00002417\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 6890/30000, Loss: 0.00000836\n",
      "Epoch: 6900/30000, Loss: 0.00000869\n",
      "Epoch: 6910/30000, Loss: 0.00002891\n",
      "Epoch: 6920/30000, Loss: 0.00030500\n",
      "Epoch: 6930/30000, Loss: 0.00005538\n",
      "Epoch: 6940/30000, Loss: 0.00003149\n",
      "Epoch: 6950/30000, Loss: 0.00001383\n",
      "Epoch: 6960/30000, Loss: 0.00000790\n",
      "Epoch: 6970/30000, Loss: 0.00000652\n",
      "Epoch: 6980/30000, Loss: 0.00001660\n",
      "Epoch: 6990/30000, Loss: 0.00032564\n",
      "Epoch: 7000/30000, Loss: 0.00015237\n",
      "Epoch: 7010/30000, Loss: 0.00004080\n",
      "Epoch: 7020/30000, Loss: 0.00003696\n",
      "Epoch: 7030/30000, Loss: 0.00001799\n",
      "Epoch: 7040/30000, Loss: 0.00001996\n",
      "Epoch: 7050/30000, Loss: 0.00005056\n",
      "Epoch: 7060/30000, Loss: 0.00003640\n",
      "Epoch: 7070/30000, Loss: 0.00001915\n",
      "Epoch: 7080/30000, Loss: 0.00000683\n",
      "Epoch: 7090/30000, Loss: 0.00000935\n",
      "Epoch: 7100/30000, Loss: 0.00002551\n",
      "Epoch: 7110/30000, Loss: 0.00016032\n",
      "Epoch: 7120/30000, Loss: 0.00009926\n",
      "Epoch: 7130/30000, Loss: 0.00003413\n",
      "Epoch: 7140/30000, Loss: 0.00001799\n",
      "Epoch: 7150/30000, Loss: 0.00000939\n",
      "Epoch: 7160/30000, Loss: 0.00000650\n",
      "Epoch: 7170/30000, Loss: 0.00001044\n",
      "Epoch: 7180/30000, Loss: 0.00009930\n",
      "Epoch: 7190/30000, Loss: 0.00033642\n",
      "Epoch: 7200/30000, Loss: 0.00013231\n",
      "Epoch: 7210/30000, Loss: 0.00005387\n",
      "Epoch: 7220/30000, Loss: 0.00001511\n",
      "Epoch: 7230/30000, Loss: 0.00000868\n",
      "Epoch: 7240/30000, Loss: 0.00000668\n",
      "Epoch: 7250/30000, Loss: 0.00000638\n",
      "Epoch: 7260/30000, Loss: 0.00000823\n",
      "Epoch: 7270/30000, Loss: 0.00001170\n",
      "Epoch: 7280/30000, Loss: 0.00001906\n",
      "Epoch: 7290/30000, Loss: 0.00004671\n",
      "Epoch: 7300/30000, Loss: 0.00015421\n",
      "Epoch: 7310/30000, Loss: 0.00008896\n",
      "Epoch: 7320/30000, Loss: 0.00005045\n",
      "Epoch: 7330/30000, Loss: 0.00001747\n",
      "Epoch: 7340/30000, Loss: 0.00001033\n",
      "Epoch: 7350/30000, Loss: 0.00003370\n",
      "Epoch: 7360/30000, Loss: 0.00008892\n",
      "Epoch: 7370/30000, Loss: 0.00002748\n",
      "Epoch: 7380/30000, Loss: 0.00002459\n",
      "Epoch: 7390/30000, Loss: 0.00005542\n",
      "Epoch: 7400/30000, Loss: 0.00003959\n",
      "Epoch: 7410/30000, Loss: 0.00001065\n",
      "Epoch: 7420/30000, Loss: 0.00001402\n",
      "Epoch: 7430/30000, Loss: 0.00015487\n",
      "Epoch: 7440/30000, Loss: 0.00002340\n",
      "Epoch: 7450/30000, Loss: 0.00020383\n",
      "Epoch: 7460/30000, Loss: 0.00003509\n",
      "Epoch: 7470/30000, Loss: 0.00001991\n",
      "Epoch: 7480/30000, Loss: 0.00001115\n",
      "Epoch: 7490/30000, Loss: 0.00000696\n",
      "Epoch: 7500/30000, Loss: 0.00000678\n",
      "Epoch: 7510/30000, Loss: 0.00000611\n",
      "Epoch: 7520/30000, Loss: 0.00000894\n",
      "Epoch: 7530/30000, Loss: 0.00001854\n",
      "Epoch: 7540/30000, Loss: 0.00038418\n",
      "Epoch: 7550/30000, Loss: 0.00365939\n",
      "Epoch: 7560/30000, Loss: 0.00167151\n",
      "Epoch: 7570/30000, Loss: 0.00072997\n",
      "Epoch: 7580/30000, Loss: 0.00024604\n",
      "Epoch: 7590/30000, Loss: 0.00010546\n",
      "Epoch: 7600/30000, Loss: 0.00004394\n",
      "Epoch: 7610/30000, Loss: 0.00002730\n",
      "Epoch: 7620/30000, Loss: 0.00001927\n",
      "Epoch: 7630/30000, Loss: 0.00001597\n",
      "Epoch: 7640/30000, Loss: 0.00001429\n",
      "Epoch: 7650/30000, Loss: 0.00001332\n",
      "Epoch: 7660/30000, Loss: 0.00001260\n",
      "Epoch: 7670/30000, Loss: 0.00001204\n",
      "Epoch: 7680/30000, Loss: 0.00001157\n",
      "Epoch: 7690/30000, Loss: 0.00001118\n",
      "Epoch: 7700/30000, Loss: 0.00002765\n",
      "Epoch: 7710/30000, Loss: 0.00003715\n",
      "Epoch: 7720/30000, Loss: 0.00003342\n",
      "Epoch: 7730/30000, Loss: 0.00001766\n",
      "Epoch: 7740/30000, Loss: 0.00001276\n",
      "Epoch: 7750/30000, Loss: 0.00001169\n",
      "Epoch: 7760/30000, Loss: 0.00001100\n",
      "Epoch: 7770/30000, Loss: 0.00001064\n",
      "Epoch: 7780/30000, Loss: 0.00001029\n",
      "Epoch: 7790/30000, Loss: 0.00001006\n",
      "Epoch: 7800/30000, Loss: 0.00000985\n",
      "Epoch: 7810/30000, Loss: 0.00001068\n",
      "Epoch: 7820/30000, Loss: 0.00002916\n",
      "Epoch: 7830/30000, Loss: 0.00002211\n",
      "Epoch: 7840/30000, Loss: 0.00001579\n",
      "Epoch: 7850/30000, Loss: 0.00001086\n",
      "Epoch: 7860/30000, Loss: 0.00001054\n",
      "Epoch: 7870/30000, Loss: 0.00001028\n",
      "Epoch: 7880/30000, Loss: 0.00000951\n",
      "Epoch: 7890/30000, Loss: 0.00000934\n",
      "Epoch: 7900/30000, Loss: 0.00000914\n",
      "Epoch: 7910/30000, Loss: 0.00000894\n",
      "Epoch: 7920/30000, Loss: 0.00000886\n",
      "Epoch: 7930/30000, Loss: 0.00002407\n",
      "Epoch: 7940/30000, Loss: 0.00002944\n",
      "Epoch: 7950/30000, Loss: 0.00001989\n",
      "Epoch: 7960/30000, Loss: 0.00001763\n",
      "Epoch: 7970/30000, Loss: 0.00001350\n",
      "Epoch: 7980/30000, Loss: 0.00000943\n",
      "Epoch: 7990/30000, Loss: 0.00000879\n",
      "Epoch: 8000/30000, Loss: 0.00000878\n",
      "Epoch: 8010/30000, Loss: 0.00000826\n",
      "Epoch: 8020/30000, Loss: 0.00000831\n",
      "Epoch: 8030/30000, Loss: 0.00003094\n",
      "Epoch: 8040/30000, Loss: 0.00001758\n",
      "Epoch: 8050/30000, Loss: 0.00006132\n",
      "Epoch: 8060/30000, Loss: 0.00001069\n",
      "Epoch: 8070/30000, Loss: 0.00001441\n",
      "Epoch: 8080/30000, Loss: 0.00001134\n",
      "Epoch: 8090/30000, Loss: 0.00000938\n",
      "Epoch: 8100/30000, Loss: 0.00000868\n",
      "Epoch: 8110/30000, Loss: 0.00000796\n",
      "Epoch: 8120/30000, Loss: 0.00000827\n",
      "Epoch: 8130/30000, Loss: 0.00002626\n",
      "Epoch: 8140/30000, Loss: 0.00011045\n",
      "Epoch: 8150/30000, Loss: 0.00002261\n",
      "Epoch: 8160/30000, Loss: 0.00003062\n",
      "Epoch: 8170/30000, Loss: 0.00001829\n",
      "Epoch: 8180/30000, Loss: 0.00001167\n",
      "Epoch: 8190/30000, Loss: 0.00000964\n",
      "Epoch: 8200/30000, Loss: 0.00000789\n",
      "Epoch: 8210/30000, Loss: 0.00000822\n",
      "Epoch: 8220/30000, Loss: 0.00002377\n",
      "Epoch: 8230/30000, Loss: 0.00021794\n",
      "Epoch: 8240/30000, Loss: 0.00001658\n",
      "Epoch: 8250/30000, Loss: 0.00002006\n",
      "Epoch: 8260/30000, Loss: 0.00001736\n",
      "Epoch: 8270/30000, Loss: 0.00001110\n",
      "Epoch: 8280/30000, Loss: 0.00000840\n",
      "Epoch: 8290/30000, Loss: 0.00000869\n",
      "Epoch: 8300/30000, Loss: 0.00000795\n",
      "Epoch: 8310/30000, Loss: 0.00001151\n",
      "Epoch: 8320/30000, Loss: 0.00010703\n",
      "Epoch: 8330/30000, Loss: 0.00006914\n",
      "Epoch: 8340/30000, Loss: 0.00006676\n",
      "Epoch: 8350/30000, Loss: 0.00001994\n",
      "Epoch: 8360/30000, Loss: 0.00001974\n",
      "Epoch: 8370/30000, Loss: 0.00001081\n",
      "Epoch: 8380/30000, Loss: 0.00000864\n",
      "Epoch: 8390/30000, Loss: 0.00000826\n",
      "Epoch: 8400/30000, Loss: 0.00000812\n",
      "Epoch: 8410/30000, Loss: 0.00001045\n",
      "Epoch: 8420/30000, Loss: 0.00001780\n",
      "Epoch: 8430/30000, Loss: 0.00004385\n",
      "Epoch: 8440/30000, Loss: 0.00022171\n",
      "Epoch: 8450/30000, Loss: 0.00004928\n",
      "Epoch: 8460/30000, Loss: 0.00001489\n",
      "Epoch: 8470/30000, Loss: 0.00001422\n",
      "Epoch: 8480/30000, Loss: 0.00001287\n",
      "Epoch: 8490/30000, Loss: 0.00000896\n",
      "Epoch: 8500/30000, Loss: 0.00001153\n",
      "Epoch: 8510/30000, Loss: 0.00004013\n",
      "Epoch: 8520/30000, Loss: 0.00020826\n",
      "Epoch: 8530/30000, Loss: 0.00008222\n",
      "Epoch: 8540/30000, Loss: 0.00003413\n",
      "Epoch: 8550/30000, Loss: 0.00001167\n",
      "Epoch: 8560/30000, Loss: 0.00001713\n",
      "Epoch: 8570/30000, Loss: 0.00001448\n",
      "Epoch: 8580/30000, Loss: 0.00003192\n",
      "Epoch: 8590/30000, Loss: 0.00023629\n",
      "Epoch: 8600/30000, Loss: 0.00007113\n",
      "Epoch: 8610/30000, Loss: 0.00003592\n",
      "Epoch: 8620/30000, Loss: 0.00001369\n",
      "Epoch: 8630/30000, Loss: 0.00001563\n",
      "Epoch: 8640/30000, Loss: 0.00001188\n",
      "Epoch: 8650/30000, Loss: 0.00002782\n",
      "Epoch: 8660/30000, Loss: 0.00010683\n",
      "Epoch: 8670/30000, Loss: 0.00008383\n",
      "Epoch: 8680/30000, Loss: 0.00005940\n",
      "Epoch: 8690/30000, Loss: 0.00002163\n",
      "Epoch: 8700/30000, Loss: 0.00002846\n",
      "Epoch: 8710/30000, Loss: 0.00002051\n",
      "Epoch: 8720/30000, Loss: 0.00004175\n",
      "Epoch: 8730/30000, Loss: 0.00019866\n",
      "Epoch: 8740/30000, Loss: 0.00003400\n",
      "Epoch: 8750/30000, Loss: 0.00001772\n",
      "Epoch: 8760/30000, Loss: 0.00002319\n",
      "Epoch: 8770/30000, Loss: 0.00001824\n",
      "Epoch: 8780/30000, Loss: 0.00002996\n",
      "Epoch: 8790/30000, Loss: 0.00007279\n",
      "Epoch: 8800/30000, Loss: 0.00016864\n",
      "Epoch: 8810/30000, Loss: 0.00007098\n",
      "Epoch: 8820/30000, Loss: 0.00001883\n",
      "Epoch: 8830/30000, Loss: 0.00003147\n",
      "Epoch: 8840/30000, Loss: 0.00002492\n",
      "Epoch: 8850/30000, Loss: 0.00002785\n",
      "Epoch: 8860/30000, Loss: 0.00014737\n",
      "Epoch: 8870/30000, Loss: 0.00003176\n",
      "Epoch: 8880/30000, Loss: 0.00001985\n",
      "Epoch: 8890/30000, Loss: 0.00001560\n",
      "Epoch: 8900/30000, Loss: 0.00002327\n",
      "Epoch: 8910/30000, Loss: 0.00002290\n",
      "Epoch: 8920/30000, Loss: 0.00002833\n",
      "Epoch: 8930/30000, Loss: 0.00004053\n",
      "Epoch: 8940/30000, Loss: 0.00014410\n",
      "Epoch: 8950/30000, Loss: 0.00005358\n",
      "Epoch: 8960/30000, Loss: 0.00001981\n",
      "Epoch: 8970/30000, Loss: 0.00001550\n",
      "Epoch: 8980/30000, Loss: 0.00001957\n",
      "Epoch: 8990/30000, Loss: 0.00001933\n",
      "Epoch: 9000/30000, Loss: 0.00002302\n",
      "Epoch: 9010/30000, Loss: 0.00002247\n",
      "Epoch: 9020/30000, Loss: 0.00005977\n",
      "Epoch: 9030/30000, Loss: 0.00040345\n",
      "Epoch: 9040/30000, Loss: 0.00006516\n",
      "Epoch: 9050/30000, Loss: 0.00002137\n",
      "Epoch: 9060/30000, Loss: 0.00001923\n",
      "Epoch: 9070/30000, Loss: 0.00001726\n",
      "Epoch: 9080/30000, Loss: 0.00002468\n",
      "Epoch: 9090/30000, Loss: 0.00002018\n",
      "Epoch: 9100/30000, Loss: 0.00002951\n",
      "Epoch: 9110/30000, Loss: 0.00003341\n",
      "Epoch: 9120/30000, Loss: 0.00007917\n",
      "Epoch: 9130/30000, Loss: 0.00028637\n",
      "Epoch: 9140/30000, Loss: 0.00009029\n",
      "Epoch: 9150/30000, Loss: 0.00003435\n",
      "Epoch: 9160/30000, Loss: 0.00002607\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 9170/30000, Loss: 0.00001615\n",
      "Epoch: 9180/30000, Loss: 0.00001883\n",
      "Epoch: 9190/30000, Loss: 0.00002331\n",
      "Epoch: 9200/30000, Loss: 0.00003093\n",
      "Epoch: 9210/30000, Loss: 0.00010304\n",
      "Epoch: 9220/30000, Loss: 0.00008042\n",
      "Epoch: 9230/30000, Loss: 0.00010410\n",
      "Epoch: 9240/30000, Loss: 0.00003187\n",
      "Epoch: 9250/30000, Loss: 0.00001554\n",
      "Epoch: 9260/30000, Loss: 0.00001260\n",
      "Epoch: 9270/30000, Loss: 0.00001993\n",
      "Epoch: 9280/30000, Loss: 0.00002598\n",
      "Epoch: 9290/30000, Loss: 0.00003090\n",
      "Epoch: 9300/30000, Loss: 0.00005037\n",
      "Epoch: 9310/30000, Loss: 0.00004601\n",
      "Epoch: 9320/30000, Loss: 0.00003763\n",
      "Epoch: 9330/30000, Loss: 0.00019717\n",
      "Epoch: 9340/30000, Loss: 0.00003505\n",
      "Epoch: 9350/30000, Loss: 0.00005136\n",
      "Epoch: 9360/30000, Loss: 0.00002816\n",
      "Epoch: 9370/30000, Loss: 0.00001277\n",
      "Epoch: 9380/30000, Loss: 0.00001486\n",
      "Epoch: 9390/30000, Loss: 0.00001771\n",
      "Epoch: 9400/30000, Loss: 0.00002767\n",
      "Epoch: 9410/30000, Loss: 0.00004511\n",
      "Epoch: 9420/30000, Loss: 0.00030915\n",
      "Epoch: 9430/30000, Loss: 0.00011110\n",
      "Epoch: 9440/30000, Loss: 0.00005242\n",
      "Epoch: 9450/30000, Loss: 0.00002680\n",
      "Epoch: 9460/30000, Loss: 0.00001697\n",
      "Epoch: 9470/30000, Loss: 0.00002711\n",
      "Epoch: 9480/30000, Loss: 0.00003175\n",
      "Epoch: 9490/30000, Loss: 0.00003889\n",
      "Epoch: 9500/30000, Loss: 0.00010639\n",
      "Epoch: 9510/30000, Loss: 0.00014047\n",
      "Epoch: 9520/30000, Loss: 0.00003476\n",
      "Epoch: 9530/30000, Loss: 0.00004189\n",
      "Epoch: 9540/30000, Loss: 0.00002105\n",
      "Epoch: 9550/30000, Loss: 0.00001405\n",
      "Epoch: 9560/30000, Loss: 0.00002043\n",
      "Epoch: 9570/30000, Loss: 0.00002679\n",
      "Epoch: 9580/30000, Loss: 0.00002920\n",
      "Epoch: 9590/30000, Loss: 0.00003027\n",
      "Epoch: 9600/30000, Loss: 0.00003909\n",
      "Epoch: 9610/30000, Loss: 0.00005692\n",
      "Epoch: 9620/30000, Loss: 0.00030328\n",
      "Epoch: 9630/30000, Loss: 0.00017733\n",
      "Epoch: 9640/30000, Loss: 0.00004945\n",
      "Epoch: 9650/30000, Loss: 0.00004047\n",
      "Epoch: 9660/30000, Loss: 0.00001464\n",
      "Epoch: 9670/30000, Loss: 0.00001263\n",
      "Epoch: 9680/30000, Loss: 0.00001253\n",
      "Epoch: 9690/30000, Loss: 0.00001242\n",
      "Epoch: 9700/30000, Loss: 0.00001815\n",
      "Epoch: 9710/30000, Loss: 0.00004245\n",
      "Epoch: 9720/30000, Loss: 0.00004660\n",
      "Epoch: 9730/30000, Loss: 0.00004957\n",
      "Epoch: 9740/30000, Loss: 0.00004567\n",
      "Epoch: 9750/30000, Loss: 0.00003839\n",
      "Epoch: 9760/30000, Loss: 0.00015029\n",
      "Epoch: 9770/30000, Loss: 0.00002563\n",
      "Epoch: 9780/30000, Loss: 0.00009550\n",
      "Epoch: 9790/30000, Loss: 0.00001697\n",
      "Epoch: 9800/30000, Loss: 0.00001404\n",
      "Epoch: 9810/30000, Loss: 0.00001795\n",
      "Epoch: 9820/30000, Loss: 0.00001575\n",
      "Epoch: 9830/30000, Loss: 0.00001616\n",
      "Epoch: 9840/30000, Loss: 0.00002099\n",
      "Epoch: 9850/30000, Loss: 0.00003655\n",
      "Epoch: 9860/30000, Loss: 0.00010319\n",
      "Epoch: 9870/30000, Loss: 0.00011582\n",
      "Epoch: 9880/30000, Loss: 0.00005396\n",
      "Epoch: 9890/30000, Loss: 0.00002852\n",
      "Epoch: 9900/30000, Loss: 0.00001151\n",
      "Epoch: 9910/30000, Loss: 0.00001607\n",
      "Epoch: 9920/30000, Loss: 0.00004659\n",
      "Epoch: 9930/30000, Loss: 0.00024054\n",
      "Epoch: 9940/30000, Loss: 0.00007545\n",
      "Epoch: 9950/30000, Loss: 0.00003219\n",
      "Epoch: 9960/30000, Loss: 0.00001516\n",
      "Epoch: 9970/30000, Loss: 0.00001765\n",
      "Epoch: 9980/30000, Loss: 0.00002262\n",
      "Epoch: 9990/30000, Loss: 0.00009362\n",
      "Epoch: 10000/30000, Loss: 0.00012975\n",
      "Epoch: 10010/30000, Loss: 0.00006383\n",
      "Epoch: 10020/30000, Loss: 0.00003271\n",
      "Epoch: 10030/30000, Loss: 0.00001338\n",
      "Epoch: 10040/30000, Loss: 0.00002112\n",
      "Epoch: 10050/30000, Loss: 0.00005679\n",
      "Epoch: 10060/30000, Loss: 0.00021343\n",
      "Epoch: 10070/30000, Loss: 0.00006550\n",
      "Epoch: 10080/30000, Loss: 0.00002415\n",
      "Epoch: 10090/30000, Loss: 0.00002857\n",
      "Epoch: 10100/30000, Loss: 0.00002135\n",
      "Epoch: 10110/30000, Loss: 0.00003033\n",
      "Epoch: 10120/30000, Loss: 0.00015560\n",
      "Epoch: 10130/30000, Loss: 0.00006018\n",
      "Epoch: 10140/30000, Loss: 0.00004435\n",
      "Epoch: 10150/30000, Loss: 0.00003174\n",
      "Epoch: 10160/30000, Loss: 0.00002176\n",
      "Epoch: 10170/30000, Loss: 0.00001513\n",
      "Epoch: 10180/30000, Loss: 0.00001739\n",
      "Epoch: 10190/30000, Loss: 0.00002995\n",
      "Epoch: 10200/30000, Loss: 0.00003523\n",
      "Epoch: 10210/30000, Loss: 0.00004566\n",
      "Epoch: 10220/30000, Loss: 0.00005134\n",
      "Epoch: 10230/30000, Loss: 0.00005604\n",
      "Epoch: 10240/30000, Loss: 0.00003607\n",
      "Epoch: 10250/30000, Loss: 0.00001657\n",
      "Epoch: 10260/30000, Loss: 0.00001247\n",
      "Epoch: 10270/30000, Loss: 0.00001708\n",
      "Epoch: 10280/30000, Loss: 0.00030968\n",
      "Epoch: 10290/30000, Loss: 0.00011764\n",
      "Epoch: 10300/30000, Loss: 0.00006529\n",
      "Epoch: 10310/30000, Loss: 0.00001758\n",
      "Epoch: 10320/30000, Loss: 0.00001359\n",
      "Epoch: 10330/30000, Loss: 0.00001222\n",
      "Epoch: 10340/30000, Loss: 0.00002572\n",
      "Epoch: 10350/30000, Loss: 0.00003508\n",
      "Epoch: 10360/30000, Loss: 0.00004873\n",
      "Epoch: 10370/30000, Loss: 0.00007426\n",
      "Epoch: 10380/30000, Loss: 0.00020934\n",
      "Epoch: 10390/30000, Loss: 0.00004731\n",
      "Epoch: 10400/30000, Loss: 0.00001751\n",
      "Epoch: 10410/30000, Loss: 0.00001504\n",
      "Epoch: 10420/30000, Loss: 0.00001478\n",
      "Epoch: 10430/30000, Loss: 0.00002669\n",
      "Epoch: 10440/30000, Loss: 0.00011115\n",
      "Epoch: 10450/30000, Loss: 0.00004729\n",
      "Epoch: 10460/30000, Loss: 0.00004880\n",
      "Epoch: 10470/30000, Loss: 0.00001574\n",
      "Epoch: 10480/30000, Loss: 0.00003178\n",
      "Epoch: 10490/30000, Loss: 0.00010754\n",
      "Epoch: 10500/30000, Loss: 0.00004263\n",
      "Epoch: 10510/30000, Loss: 0.00004341\n",
      "Epoch: 10520/30000, Loss: 0.00003692\n",
      "Epoch: 10530/30000, Loss: 0.00004532\n",
      "Epoch: 10540/30000, Loss: 0.00012070\n",
      "Epoch: 10550/30000, Loss: 0.00004420\n",
      "Epoch: 10560/30000, Loss: 0.00003951\n",
      "Epoch: 10570/30000, Loss: 0.00002057\n",
      "Epoch: 10580/30000, Loss: 0.00002267\n",
      "Epoch: 10590/30000, Loss: 0.00004117\n",
      "Epoch: 10600/30000, Loss: 0.00041663\n",
      "Epoch: 10610/30000, Loss: 0.00013061\n",
      "Epoch: 10620/30000, Loss: 0.00003019\n",
      "Epoch: 10630/30000, Loss: 0.00001558\n",
      "Epoch: 10640/30000, Loss: 0.00002041\n",
      "Epoch: 10650/30000, Loss: 0.00002606\n",
      "Epoch: 10660/30000, Loss: 0.00003315\n",
      "Epoch: 10670/30000, Loss: 0.00003106\n",
      "Epoch: 10680/30000, Loss: 0.00006763\n",
      "Epoch: 10690/30000, Loss: 0.00056249\n",
      "Epoch: 10700/30000, Loss: 0.00012746\n",
      "Epoch: 10710/30000, Loss: 0.00006803\n",
      "Epoch: 10720/30000, Loss: 0.00003318\n",
      "Epoch: 10730/30000, Loss: 0.00001872\n",
      "Epoch: 10740/30000, Loss: 0.00001420\n",
      "Epoch: 10750/30000, Loss: 0.00001500\n",
      "Epoch: 10760/30000, Loss: 0.00002017\n",
      "Epoch: 10770/30000, Loss: 0.00002507\n",
      "Epoch: 10780/30000, Loss: 0.00003169\n",
      "Epoch: 10790/30000, Loss: 0.00006910\n",
      "Epoch: 10800/30000, Loss: 0.00010613\n",
      "Epoch: 10810/30000, Loss: 0.00004333\n",
      "Epoch: 10820/30000, Loss: 0.00002307\n",
      "Epoch: 10830/30000, Loss: 0.00001448\n",
      "Epoch: 10840/30000, Loss: 0.00001333\n",
      "Epoch: 10850/30000, Loss: 0.00004117\n",
      "Epoch: 10860/30000, Loss: 0.00031118\n",
      "Epoch: 10870/30000, Loss: 0.00009783\n",
      "Epoch: 10880/30000, Loss: 0.00002661\n",
      "Epoch: 10890/30000, Loss: 0.00002040\n",
      "Epoch: 10900/30000, Loss: 0.00001865\n",
      "Epoch: 10910/30000, Loss: 0.00001564\n",
      "Epoch: 10920/30000, Loss: 0.00001678\n",
      "Epoch: 10930/30000, Loss: 0.00002879\n",
      "Epoch: 10940/30000, Loss: 0.00008909\n",
      "Epoch: 10950/30000, Loss: 0.00022352\n",
      "Epoch: 10960/30000, Loss: 0.00004645\n",
      "Epoch: 10970/30000, Loss: 0.00001874\n",
      "Epoch: 10980/30000, Loss: 0.00001636\n",
      "Epoch: 10990/30000, Loss: 0.00001640\n",
      "Epoch: 11000/30000, Loss: 0.00001482\n",
      "Epoch: 11010/30000, Loss: 0.00003277\n",
      "Epoch: 11020/30000, Loss: 0.00003666\n",
      "Epoch: 11030/30000, Loss: 0.00020771\n",
      "Epoch: 11040/30000, Loss: 0.00004333\n",
      "Epoch: 11050/30000, Loss: 0.00004704\n",
      "Epoch: 11060/30000, Loss: 0.00002406\n",
      "Epoch: 11070/30000, Loss: 0.00001247\n",
      "Epoch: 11080/30000, Loss: 0.00001759\n",
      "Epoch: 11090/30000, Loss: 0.00001745\n",
      "Epoch: 11100/30000, Loss: 0.00002562\n",
      "Epoch: 11110/30000, Loss: 0.00005879\n",
      "Epoch: 11120/30000, Loss: 0.00036565\n",
      "Epoch: 11130/30000, Loss: 0.00007480\n",
      "Epoch: 11140/30000, Loss: 0.00001969\n",
      "Epoch: 11150/30000, Loss: 0.00001671\n",
      "Epoch: 11160/30000, Loss: 0.00001706\n",
      "Epoch: 11170/30000, Loss: 0.00001816\n",
      "Epoch: 11180/30000, Loss: 0.00002314\n",
      "Epoch: 11190/30000, Loss: 0.00002441\n",
      "Epoch: 11200/30000, Loss: 0.00003608\n",
      "Epoch: 11210/30000, Loss: 0.00004680\n",
      "Epoch: 11220/30000, Loss: 0.00049212\n",
      "Epoch: 11230/30000, Loss: 0.00016891\n",
      "Epoch: 11240/30000, Loss: 0.00003378\n",
      "Epoch: 11250/30000, Loss: 0.00003239\n",
      "Epoch: 11260/30000, Loss: 0.00001322\n",
      "Epoch: 11270/30000, Loss: 0.00001464\n",
      "Epoch: 11280/30000, Loss: 0.00002443\n",
      "Epoch: 11290/30000, Loss: 0.00003224\n",
      "Epoch: 11300/30000, Loss: 0.00004474\n",
      "Epoch: 11310/30000, Loss: 0.00006177\n",
      "Epoch: 11320/30000, Loss: 0.00005641\n",
      "Epoch: 11330/30000, Loss: 0.00008179\n",
      "Epoch: 11340/30000, Loss: 0.00002163\n",
      "Epoch: 11350/30000, Loss: 0.00002509\n",
      "Epoch: 11360/30000, Loss: 0.00007721\n",
      "Epoch: 11370/30000, Loss: 0.00009350\n",
      "Epoch: 11380/30000, Loss: 0.00005180\n",
      "Epoch: 11390/30000, Loss: 0.00001443\n",
      "Epoch: 11400/30000, Loss: 0.00002349\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 11410/30000, Loss: 0.00010785\n",
      "Epoch: 11420/30000, Loss: 0.00027353\n",
      "Epoch: 11430/30000, Loss: 0.00008838\n",
      "Epoch: 11440/30000, Loss: 0.00003005\n",
      "Epoch: 11450/30000, Loss: 0.00002256\n",
      "Epoch: 11460/30000, Loss: 0.00001674\n",
      "Epoch: 11470/30000, Loss: 0.00001768\n",
      "Epoch: 11480/30000, Loss: 0.00006669\n",
      "Epoch: 11490/30000, Loss: 0.00005408\n",
      "Epoch: 11500/30000, Loss: 0.00003808\n",
      "Epoch: 11510/30000, Loss: 0.00002455\n",
      "Epoch: 11520/30000, Loss: 0.00001946\n",
      "Epoch: 11530/30000, Loss: 0.00003229\n",
      "Epoch: 11540/30000, Loss: 0.00009893\n",
      "Epoch: 11550/30000, Loss: 0.00007436\n",
      "Epoch: 11560/30000, Loss: 0.00001867\n",
      "Epoch: 11570/30000, Loss: 0.00001792\n",
      "Epoch: 11580/30000, Loss: 0.00008041\n",
      "Epoch: 11590/30000, Loss: 0.00012211\n",
      "Epoch: 11600/30000, Loss: 0.00004401\n",
      "Epoch: 11610/30000, Loss: 0.00003685\n",
      "Epoch: 11620/30000, Loss: 0.00002380\n",
      "Epoch: 11630/30000, Loss: 0.00001813\n",
      "Epoch: 11640/30000, Loss: 0.00001451\n",
      "Epoch: 11650/30000, Loss: 0.00002062\n",
      "Epoch: 11660/30000, Loss: 0.00011656\n",
      "Epoch: 11670/30000, Loss: 0.00026755\n",
      "Epoch: 11680/30000, Loss: 0.00009652\n",
      "Epoch: 11690/30000, Loss: 0.00004229\n",
      "Epoch: 11700/30000, Loss: 0.00001819\n",
      "Epoch: 11710/30000, Loss: 0.00001895\n",
      "Epoch: 11720/30000, Loss: 0.00001765\n",
      "Epoch: 11730/30000, Loss: 0.00004417\n",
      "Epoch: 11740/30000, Loss: 0.00003912\n",
      "Epoch: 11750/30000, Loss: 0.00003337\n",
      "Epoch: 11760/30000, Loss: 0.00064439\n",
      "Epoch: 11770/30000, Loss: 0.00003706\n",
      "Epoch: 11780/30000, Loss: 0.00006451\n",
      "Epoch: 11790/30000, Loss: 0.00002680\n",
      "Epoch: 11800/30000, Loss: 0.00001766\n",
      "Epoch: 11810/30000, Loss: 0.00002309\n",
      "Epoch: 11820/30000, Loss: 0.00008273\n",
      "Epoch: 11830/30000, Loss: 0.00003338\n",
      "Epoch: 11840/30000, Loss: 0.00002385\n",
      "Epoch: 11850/30000, Loss: 0.00001866\n",
      "Epoch: 11860/30000, Loss: 0.00004460\n",
      "Epoch: 11870/30000, Loss: 0.00007807\n",
      "Epoch: 11880/30000, Loss: 0.00002364\n",
      "Epoch: 11890/30000, Loss: 0.00002361\n",
      "Epoch: 11900/30000, Loss: 0.00003306\n",
      "Epoch: 11910/30000, Loss: 0.00007129\n",
      "Epoch: 11920/30000, Loss: 0.00014701\n",
      "Epoch: 11930/30000, Loss: 0.00003570\n",
      "Epoch: 11940/30000, Loss: 0.00003768\n",
      "Epoch: 11950/30000, Loss: 0.00002407\n",
      "Epoch: 11960/30000, Loss: 0.00002523\n",
      "Epoch: 11970/30000, Loss: 0.00014776\n",
      "Epoch: 11980/30000, Loss: 0.00002682\n",
      "Epoch: 11990/30000, Loss: 0.00002267\n",
      "Epoch: 12000/30000, Loss: 0.00002274\n",
      "Epoch: 12010/30000, Loss: 0.00003925\n",
      "Epoch: 12020/30000, Loss: 0.00009646\n",
      "Epoch: 12030/30000, Loss: 0.00007599\n",
      "Epoch: 12040/30000, Loss: 0.00002756\n",
      "Epoch: 12050/30000, Loss: 0.00001565\n",
      "Epoch: 12060/30000, Loss: 0.00002271\n",
      "Epoch: 12070/30000, Loss: 0.00009470\n",
      "Epoch: 12080/30000, Loss: 0.00007067\n",
      "Epoch: 12090/30000, Loss: 0.00012325\n",
      "Epoch: 12100/30000, Loss: 0.00001648\n",
      "Epoch: 12110/30000, Loss: 0.00002197\n",
      "Epoch: 12120/30000, Loss: 0.00001130\n",
      "Epoch: 12130/30000, Loss: 0.00002177\n",
      "Epoch: 12140/30000, Loss: 0.00004463\n",
      "Epoch: 12150/30000, Loss: 0.00010797\n",
      "Epoch: 12160/30000, Loss: 0.00006971\n",
      "Epoch: 12170/30000, Loss: 0.00004065\n",
      "Epoch: 12180/30000, Loss: 0.00001743\n",
      "Epoch: 12190/30000, Loss: 0.00001216\n",
      "Epoch: 12200/30000, Loss: 0.00005142\n",
      "Epoch: 12210/30000, Loss: 0.00013703\n",
      "Epoch: 12220/30000, Loss: 0.00006022\n",
      "Epoch: 12230/30000, Loss: 0.00002126\n",
      "Epoch: 12240/30000, Loss: 0.00001631\n",
      "Epoch: 12250/30000, Loss: 0.00000928\n",
      "Epoch: 12260/30000, Loss: 0.00001578\n",
      "Epoch: 12270/30000, Loss: 0.00021252\n",
      "Epoch: 12280/30000, Loss: 0.00012746\n",
      "Epoch: 12290/30000, Loss: 0.00007193\n",
      "Epoch: 12300/30000, Loss: 0.00002261\n",
      "Epoch: 12310/30000, Loss: 0.00001534\n",
      "Epoch: 12320/30000, Loss: 0.00001133\n",
      "Epoch: 12330/30000, Loss: 0.00001491\n",
      "Epoch: 12340/30000, Loss: 0.00002371\n",
      "Epoch: 12350/30000, Loss: 0.00003601\n",
      "Epoch: 12360/30000, Loss: 0.00005565\n",
      "Epoch: 12370/30000, Loss: 0.00015263\n",
      "Epoch: 12380/30000, Loss: 0.00005665\n",
      "Epoch: 12390/30000, Loss: 0.00003122\n",
      "Epoch: 12400/30000, Loss: 0.00001498\n",
      "Epoch: 12410/30000, Loss: 0.00001278\n",
      "Epoch: 12420/30000, Loss: 0.00004355\n",
      "Epoch: 12430/30000, Loss: 0.00031994\n",
      "Epoch: 12440/30000, Loss: 0.00007129\n",
      "Epoch: 12450/30000, Loss: 0.00001501\n",
      "Epoch: 12460/30000, Loss: 0.00001254\n",
      "Epoch: 12470/30000, Loss: 0.00001127\n",
      "Epoch: 12480/30000, Loss: 0.00002232\n",
      "Epoch: 12490/30000, Loss: 0.00003723\n",
      "Epoch: 12500/30000, Loss: 0.00005544\n",
      "Epoch: 12510/30000, Loss: 0.00015214\n",
      "Epoch: 12520/30000, Loss: 0.00003314\n",
      "Epoch: 12530/30000, Loss: 0.00002127\n",
      "Epoch: 12540/30000, Loss: 0.00001196\n",
      "Epoch: 12550/30000, Loss: 0.00002708\n",
      "Epoch: 12560/30000, Loss: 0.00064505\n",
      "Epoch: 12570/30000, Loss: 0.00046039\n",
      "Epoch: 12580/30000, Loss: 0.00012967\n",
      "Epoch: 12590/30000, Loss: 0.00004845\n",
      "Epoch: 12600/30000, Loss: 0.00002075\n",
      "Epoch: 12610/30000, Loss: 0.00001564\n",
      "Epoch: 12620/30000, Loss: 0.00001299\n",
      "Epoch: 12630/30000, Loss: 0.00001695\n",
      "Epoch: 12640/30000, Loss: 0.00004338\n",
      "Epoch: 12650/30000, Loss: 0.00009611\n",
      "Epoch: 12660/30000, Loss: 0.00004683\n",
      "Epoch: 12670/30000, Loss: 0.00002954\n",
      "Epoch: 12680/30000, Loss: 0.00002445\n",
      "Epoch: 12690/30000, Loss: 0.00001885\n",
      "Epoch: 12700/30000, Loss: 0.00005724\n",
      "Epoch: 12710/30000, Loss: 0.00001867\n",
      "Epoch: 12720/30000, Loss: 0.00001609\n",
      "Epoch: 12730/30000, Loss: 0.00001088\n",
      "Epoch: 12740/30000, Loss: 0.00001273\n",
      "Epoch: 12750/30000, Loss: 0.00002978\n",
      "Epoch: 12760/30000, Loss: 0.00004090\n",
      "Epoch: 12770/30000, Loss: 0.00002223\n",
      "Epoch: 12780/30000, Loss: 0.00004771\n",
      "Epoch: 12790/30000, Loss: 0.00004726\n",
      "Epoch: 12800/30000, Loss: 0.00002161\n",
      "Epoch: 12810/30000, Loss: 0.00001081\n",
      "Epoch: 12820/30000, Loss: 0.00000916\n",
      "Epoch: 12830/30000, Loss: 0.00000915\n",
      "Epoch: 12840/30000, Loss: 0.00003012\n",
      "Epoch: 12850/30000, Loss: 0.00009108\n",
      "Epoch: 12860/30000, Loss: 0.00003872\n",
      "Epoch: 12870/30000, Loss: 0.00010330\n",
      "Epoch: 12880/30000, Loss: 0.00001842\n",
      "Epoch: 12890/30000, Loss: 0.00002414\n",
      "Epoch: 12900/30000, Loss: 0.00001256\n",
      "Epoch: 12910/30000, Loss: 0.00001809\n",
      "Epoch: 12920/30000, Loss: 0.00007065\n",
      "Epoch: 12930/30000, Loss: 0.00014865\n",
      "Epoch: 12940/30000, Loss: 0.00004448\n",
      "Epoch: 12950/30000, Loss: 0.00002015\n",
      "Epoch: 12960/30000, Loss: 0.00001742\n",
      "Epoch: 12970/30000, Loss: 0.00002290\n",
      "Epoch: 12980/30000, Loss: 0.00010598\n",
      "Epoch: 12990/30000, Loss: 0.00005298\n",
      "Epoch: 13000/30000, Loss: 0.00004324\n",
      "Epoch: 13010/30000, Loss: 0.00001458\n",
      "Epoch: 13020/30000, Loss: 0.00002697\n",
      "Epoch: 13030/30000, Loss: 0.00007654\n",
      "Epoch: 13040/30000, Loss: 0.00017783\n",
      "Epoch: 13050/30000, Loss: 0.00007920\n",
      "Epoch: 13060/30000, Loss: 0.00001889\n",
      "Epoch: 13070/30000, Loss: 0.00002158\n",
      "Epoch: 13080/30000, Loss: 0.00004222\n",
      "Epoch: 13090/30000, Loss: 0.00009622\n",
      "Epoch: 13100/30000, Loss: 0.00001745\n",
      "Epoch: 13110/30000, Loss: 0.00002840\n",
      "Epoch: 13120/30000, Loss: 0.00005361\n",
      "Epoch: 13130/30000, Loss: 0.00015524\n",
      "Epoch: 13140/30000, Loss: 0.00003498\n",
      "Epoch: 13150/30000, Loss: 0.00001961\n",
      "Epoch: 13160/30000, Loss: 0.00002423\n",
      "Epoch: 13170/30000, Loss: 0.00003982\n",
      "Epoch: 13180/30000, Loss: 0.00003435\n",
      "Epoch: 13190/30000, Loss: 0.00007936\n",
      "Epoch: 13200/30000, Loss: 0.00024146\n",
      "Epoch: 13210/30000, Loss: 0.00005439\n",
      "Epoch: 13220/30000, Loss: 0.00003548\n",
      "Epoch: 13230/30000, Loss: 0.00001395\n",
      "Epoch: 13240/30000, Loss: 0.00001584\n",
      "Epoch: 13250/30000, Loss: 0.00001653\n",
      "Epoch: 13260/30000, Loss: 0.00006399\n",
      "Epoch: 13270/30000, Loss: 0.00006744\n",
      "Epoch: 13280/30000, Loss: 0.00003576\n",
      "Epoch: 13290/30000, Loss: 0.00002154\n",
      "Epoch: 13300/30000, Loss: 0.00003688\n",
      "Epoch: 13310/30000, Loss: 0.00021157\n",
      "Epoch: 13320/30000, Loss: 0.00005831\n",
      "Epoch: 13330/30000, Loss: 0.00001823\n",
      "Epoch: 13340/30000, Loss: 0.00001199\n",
      "Epoch: 13350/30000, Loss: 0.00001587\n",
      "Epoch: 13360/30000, Loss: 0.00004143\n",
      "Epoch: 13370/30000, Loss: 0.00011778\n",
      "Epoch: 13380/30000, Loss: 0.00003551\n",
      "Epoch: 13390/30000, Loss: 0.00011443\n",
      "Epoch: 13400/30000, Loss: 0.00005112\n",
      "Epoch: 13410/30000, Loss: 0.00002517\n",
      "Epoch: 13420/30000, Loss: 0.00002362\n",
      "Epoch: 13430/30000, Loss: 0.00013950\n",
      "Epoch: 13440/30000, Loss: 0.00001809\n",
      "Epoch: 13450/30000, Loss: 0.00002048\n",
      "Epoch: 13460/30000, Loss: 0.00001341\n",
      "Epoch: 13470/30000, Loss: 0.00001459\n",
      "Epoch: 13480/30000, Loss: 0.00002394\n",
      "Epoch: 13490/30000, Loss: 0.00004983\n",
      "Epoch: 13500/30000, Loss: 0.00010106\n",
      "Epoch: 13510/30000, Loss: 0.00016686\n",
      "Epoch: 13520/30000, Loss: 0.00002433\n",
      "Epoch: 13530/30000, Loss: 0.00001817\n",
      "Epoch: 13540/30000, Loss: 0.00001513\n",
      "Epoch: 13550/30000, Loss: 0.00001306\n",
      "Epoch: 13560/30000, Loss: 0.00002554\n",
      "Epoch: 13570/30000, Loss: 0.00023034\n",
      "Epoch: 13580/30000, Loss: 0.00004454\n",
      "Epoch: 13590/30000, Loss: 0.00001909\n",
      "Epoch: 13600/30000, Loss: 0.00001146\n",
      "Epoch: 13610/30000, Loss: 0.00001827\n",
      "Epoch: 13620/30000, Loss: 0.00001434\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 13630/30000, Loss: 0.00002581\n",
      "Epoch: 13640/30000, Loss: 0.00004835\n",
      "Epoch: 13650/30000, Loss: 0.00005490\n",
      "Epoch: 13660/30000, Loss: 0.00059775\n",
      "Epoch: 13670/30000, Loss: 0.00007569\n",
      "Epoch: 13680/30000, Loss: 0.00002645\n",
      "Epoch: 13690/30000, Loss: 0.00002237\n",
      "Epoch: 13700/30000, Loss: 0.00001543\n",
      "Epoch: 13710/30000, Loss: 0.00001208\n",
      "Epoch: 13720/30000, Loss: 0.00002074\n",
      "Epoch: 13730/30000, Loss: 0.00008430\n",
      "Epoch: 13740/30000, Loss: 0.00004986\n",
      "Epoch: 13750/30000, Loss: 0.00002623\n",
      "Epoch: 13760/30000, Loss: 0.00002832\n",
      "Epoch: 13770/30000, Loss: 0.00003798\n",
      "Epoch: 13780/30000, Loss: 0.00003931\n",
      "Epoch: 13790/30000, Loss: 0.00001038\n",
      "Epoch: 13800/30000, Loss: 0.00001460\n",
      "Epoch: 13810/30000, Loss: 0.00002310\n",
      "Epoch: 13820/30000, Loss: 0.00017093\n",
      "Epoch: 13830/30000, Loss: 0.00002325\n",
      "Epoch: 13840/30000, Loss: 0.00001590\n",
      "Epoch: 13850/30000, Loss: 0.00001768\n",
      "Epoch: 13860/30000, Loss: 0.00002375\n",
      "Epoch: 13870/30000, Loss: 0.00003493\n",
      "Epoch: 13880/30000, Loss: 0.00010049\n",
      "Epoch: 13890/30000, Loss: 0.00003151\n",
      "Epoch: 13900/30000, Loss: 0.00009333\n",
      "Epoch: 13910/30000, Loss: 0.00010208\n",
      "Epoch: 13920/30000, Loss: 0.00003080\n",
      "Epoch: 13930/30000, Loss: 0.00002807\n",
      "Epoch: 13940/30000, Loss: 0.00001431\n",
      "Epoch: 13950/30000, Loss: 0.00000997\n",
      "Epoch: 13960/30000, Loss: 0.00001813\n",
      "Epoch: 13970/30000, Loss: 0.00009635\n",
      "Epoch: 13980/30000, Loss: 0.00007874\n",
      "Epoch: 13990/30000, Loss: 0.00002244\n",
      "Epoch: 14000/30000, Loss: 0.00002758\n",
      "Epoch: 14010/30000, Loss: 0.00009197\n",
      "Epoch: 14020/30000, Loss: 0.00007067\n",
      "Epoch: 14030/30000, Loss: 0.00004758\n",
      "Epoch: 14040/30000, Loss: 0.00001280\n",
      "Epoch: 14050/30000, Loss: 0.00002058\n",
      "Epoch: 14060/30000, Loss: 0.00004102\n",
      "Epoch: 14070/30000, Loss: 0.00015136\n",
      "Epoch: 14080/30000, Loss: 0.00001603\n",
      "Epoch: 14090/30000, Loss: 0.00003093\n",
      "Epoch: 14100/30000, Loss: 0.00001581\n",
      "Epoch: 14110/30000, Loss: 0.00002522\n",
      "Epoch: 14120/30000, Loss: 0.00008610\n",
      "Epoch: 14130/30000, Loss: 0.00010506\n",
      "Epoch: 14140/30000, Loss: 0.00005070\n",
      "Epoch: 14150/30000, Loss: 0.00002260\n",
      "Epoch: 14160/30000, Loss: 0.00001574\n",
      "Epoch: 14170/30000, Loss: 0.00001260\n",
      "Epoch: 14180/30000, Loss: 0.00013475\n",
      "Epoch: 14190/30000, Loss: 0.00004608\n",
      "Epoch: 14200/30000, Loss: 0.00008048\n",
      "Epoch: 14210/30000, Loss: 0.00002466\n",
      "Epoch: 14220/30000, Loss: 0.00001220\n",
      "Epoch: 14230/30000, Loss: 0.00001295\n",
      "Epoch: 14240/30000, Loss: 0.00003718\n",
      "Epoch: 14250/30000, Loss: 0.00010489\n",
      "Epoch: 14260/30000, Loss: 0.00006879\n",
      "Epoch: 14270/30000, Loss: 0.00002949\n",
      "Epoch: 14280/30000, Loss: 0.00001659\n",
      "Epoch: 14290/30000, Loss: 0.00001721\n",
      "Epoch: 14300/30000, Loss: 0.00010495\n",
      "Epoch: 14310/30000, Loss: 0.00004621\n",
      "Epoch: 14320/30000, Loss: 0.00003407\n",
      "Epoch: 14330/30000, Loss: 0.00001791\n",
      "Epoch: 14340/30000, Loss: 0.00001487\n",
      "Epoch: 14350/30000, Loss: 0.00001419\n",
      "Epoch: 14360/30000, Loss: 0.00004550\n",
      "Epoch: 14370/30000, Loss: 0.00014928\n",
      "Epoch: 14380/30000, Loss: 0.00006350\n",
      "Epoch: 14390/30000, Loss: 0.00002625\n",
      "Epoch: 14400/30000, Loss: 0.00001875\n",
      "Epoch: 14410/30000, Loss: 0.00001164\n",
      "Epoch: 14420/30000, Loss: 0.00002816\n",
      "Epoch: 14430/30000, Loss: 0.00027111\n",
      "Epoch: 14440/30000, Loss: 0.00015721\n",
      "Epoch: 14450/30000, Loss: 0.00002972\n",
      "Epoch: 14460/30000, Loss: 0.00002995\n",
      "Epoch: 14470/30000, Loss: 0.00001152\n",
      "Epoch: 14480/30000, Loss: 0.00001096\n",
      "Epoch: 14490/30000, Loss: 0.00003562\n",
      "Epoch: 14500/30000, Loss: 0.00014442\n",
      "Epoch: 14510/30000, Loss: 0.00005233\n",
      "Epoch: 14520/30000, Loss: 0.00002901\n",
      "Epoch: 14530/30000, Loss: 0.00001459\n",
      "Epoch: 14540/30000, Loss: 0.00000938\n",
      "Epoch: 14550/30000, Loss: 0.00004570\n",
      "Epoch: 14560/30000, Loss: 0.00037214\n",
      "Epoch: 14570/30000, Loss: 0.00003294\n",
      "Epoch: 14580/30000, Loss: 0.00003716\n",
      "Epoch: 14590/30000, Loss: 0.00002087\n",
      "Epoch: 14600/30000, Loss: 0.00001106\n",
      "Epoch: 14610/30000, Loss: 0.00001261\n",
      "Epoch: 14620/30000, Loss: 0.00001856\n",
      "Epoch: 14630/30000, Loss: 0.00010010\n",
      "Epoch: 14640/30000, Loss: 0.00004266\n",
      "Epoch: 14650/30000, Loss: 0.00002341\n",
      "Epoch: 14660/30000, Loss: 0.00004018\n",
      "Epoch: 14670/30000, Loss: 0.00011976\n",
      "Epoch: 14680/30000, Loss: 0.00002648\n",
      "Epoch: 14690/30000, Loss: 0.00001620\n",
      "Epoch: 14700/30000, Loss: 0.00000988\n",
      "Epoch: 14710/30000, Loss: 0.00003251\n",
      "Epoch: 14720/30000, Loss: 0.00021226\n",
      "Epoch: 14730/30000, Loss: 0.00005809\n",
      "Epoch: 14740/30000, Loss: 0.00003648\n",
      "Epoch: 14750/30000, Loss: 0.00001971\n",
      "Epoch: 14760/30000, Loss: 0.00001855\n",
      "Epoch: 14770/30000, Loss: 0.00005480\n",
      "Epoch: 14780/30000, Loss: 0.00008614\n",
      "Epoch: 14790/30000, Loss: 0.00004283\n",
      "Epoch: 14800/30000, Loss: 0.00003432\n",
      "Epoch: 14810/30000, Loss: 0.00024282\n",
      "Epoch: 14820/30000, Loss: 0.00006862\n",
      "Epoch: 14830/30000, Loss: 0.00003010\n",
      "Epoch: 14840/30000, Loss: 0.00001494\n",
      "Epoch: 14850/30000, Loss: 0.00001092\n",
      "Epoch: 14860/30000, Loss: 0.00001751\n",
      "Epoch: 14870/30000, Loss: 0.00002496\n",
      "Epoch: 14880/30000, Loss: 0.00017185\n",
      "Epoch: 14890/30000, Loss: 0.00014869\n",
      "Epoch: 14900/30000, Loss: 0.00013175\n",
      "Epoch: 14910/30000, Loss: 0.00004571\n",
      "Epoch: 14920/30000, Loss: 0.00001790\n",
      "Epoch: 14930/30000, Loss: 0.00001547\n",
      "Epoch: 14940/30000, Loss: 0.00001712\n",
      "Epoch: 14950/30000, Loss: 0.00002493\n",
      "Epoch: 14960/30000, Loss: 0.00005857\n",
      "Epoch: 14970/30000, Loss: 0.00003524\n",
      "Epoch: 14980/30000, Loss: 0.00001806\n",
      "Epoch: 14990/30000, Loss: 0.00001239\n",
      "Epoch: 15000/30000, Loss: 0.00001626\n",
      "Epoch: 15010/30000, Loss: 0.00003372\n",
      "Epoch: 15020/30000, Loss: 0.00007848\n",
      "Epoch: 15030/30000, Loss: 0.00006231\n",
      "Epoch: 15040/30000, Loss: 0.00008790\n",
      "Epoch: 15050/30000, Loss: 0.00001692\n",
      "Epoch: 15060/30000, Loss: 0.00001951\n",
      "Epoch: 15070/30000, Loss: 0.00006322\n",
      "Epoch: 15080/30000, Loss: 0.00010983\n",
      "Epoch: 15090/30000, Loss: 0.00002821\n",
      "Epoch: 15100/30000, Loss: 0.00002658\n",
      "Epoch: 15110/30000, Loss: 0.00001410\n",
      "Epoch: 15120/30000, Loss: 0.00002261\n",
      "Epoch: 15130/30000, Loss: 0.00015129\n",
      "Epoch: 15140/30000, Loss: 0.00029002\n",
      "Epoch: 15150/30000, Loss: 0.00009048\n",
      "Epoch: 15160/30000, Loss: 0.00002186\n",
      "Epoch: 15170/30000, Loss: 0.00001130\n",
      "Epoch: 15180/30000, Loss: 0.00000956\n",
      "Epoch: 15190/30000, Loss: 0.00001141\n",
      "Epoch: 15200/30000, Loss: 0.00001991\n",
      "Epoch: 15210/30000, Loss: 0.00009136\n",
      "Epoch: 15220/30000, Loss: 0.00027876\n",
      "Epoch: 15230/30000, Loss: 0.00002962\n",
      "Epoch: 15240/30000, Loss: 0.00004168\n",
      "Epoch: 15250/30000, Loss: 0.00001357\n",
      "Epoch: 15260/30000, Loss: 0.00000992\n",
      "Epoch: 15270/30000, Loss: 0.00000893\n",
      "Epoch: 15280/30000, Loss: 0.00003396\n",
      "Epoch: 15290/30000, Loss: 0.00015574\n",
      "Epoch: 15300/30000, Loss: 0.00004134\n",
      "Epoch: 15310/30000, Loss: 0.00002678\n",
      "Epoch: 15320/30000, Loss: 0.00005846\n",
      "Epoch: 15330/30000, Loss: 0.00010003\n",
      "Epoch: 15340/30000, Loss: 0.00002885\n",
      "Epoch: 15350/30000, Loss: 0.00001619\n",
      "Epoch: 15360/30000, Loss: 0.00001041\n",
      "Epoch: 15370/30000, Loss: 0.00002676\n",
      "Epoch: 15380/30000, Loss: 0.00021353\n",
      "Epoch: 15390/30000, Loss: 0.00003884\n",
      "Epoch: 15400/30000, Loss: 0.00001923\n",
      "Epoch: 15410/30000, Loss: 0.00001812\n",
      "Epoch: 15420/30000, Loss: 0.00002065\n",
      "Epoch: 15430/30000, Loss: 0.00007134\n",
      "Epoch: 15440/30000, Loss: 0.00003723\n",
      "Epoch: 15450/30000, Loss: 0.00005050\n",
      "Epoch: 15460/30000, Loss: 0.00021165\n",
      "Epoch: 15470/30000, Loss: 0.00006341\n",
      "Epoch: 15480/30000, Loss: 0.00002232\n",
      "Epoch: 15490/30000, Loss: 0.00001298\n",
      "Epoch: 15500/30000, Loss: 0.00000929\n",
      "Epoch: 15510/30000, Loss: 0.00001979\n",
      "Epoch: 15520/30000, Loss: 0.00008644\n",
      "Epoch: 15530/30000, Loss: 0.00015158\n",
      "Epoch: 15540/30000, Loss: 0.00004832\n",
      "Epoch: 15550/30000, Loss: 0.00002747\n",
      "Epoch: 15560/30000, Loss: 0.00001807\n",
      "Epoch: 15570/30000, Loss: 0.00002588\n",
      "Epoch: 15580/30000, Loss: 0.00010776\n",
      "Epoch: 15590/30000, Loss: 0.00002384\n",
      "Epoch: 15600/30000, Loss: 0.00003868\n",
      "Epoch: 15610/30000, Loss: 0.00001209\n",
      "Epoch: 15620/30000, Loss: 0.00002525\n",
      "Epoch: 15630/30000, Loss: 0.00006449\n",
      "Epoch: 15640/30000, Loss: 0.00014886\n",
      "Epoch: 15650/30000, Loss: 0.00003924\n",
      "Epoch: 15660/30000, Loss: 0.00005106\n",
      "Epoch: 15670/30000, Loss: 0.00001878\n",
      "Epoch: 15680/30000, Loss: 0.00004452\n",
      "Epoch: 15690/30000, Loss: 0.00012142\n",
      "Epoch: 15700/30000, Loss: 0.00002308\n",
      "Epoch: 15710/30000, Loss: 0.00005363\n",
      "Epoch: 15720/30000, Loss: 0.00001318\n",
      "Epoch: 15730/30000, Loss: 0.00002573\n",
      "Epoch: 15740/30000, Loss: 0.00011783\n",
      "Epoch: 15750/30000, Loss: 0.00003551\n",
      "Epoch: 15760/30000, Loss: 0.00004229\n",
      "Epoch: 15770/30000, Loss: 0.00005602\n",
      "Epoch: 15780/30000, Loss: 0.00004470\n",
      "Epoch: 15790/30000, Loss: 0.00002047\n",
      "Epoch: 15800/30000, Loss: 0.00001816\n",
      "Epoch: 15810/30000, Loss: 0.00003584\n",
      "Epoch: 15820/30000, Loss: 0.00016648\n",
      "Epoch: 15830/30000, Loss: 0.00005200\n",
      "Epoch: 15840/30000, Loss: 0.00003242\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 15850/30000, Loss: 0.00002110\n",
      "Epoch: 15860/30000, Loss: 0.00001346\n",
      "Epoch: 15870/30000, Loss: 0.00001344\n",
      "Epoch: 15880/30000, Loss: 0.00003573\n",
      "Epoch: 15890/30000, Loss: 0.00013370\n",
      "Epoch: 15900/30000, Loss: 0.00005003\n",
      "Epoch: 15910/30000, Loss: 0.00002330\n",
      "Epoch: 15920/30000, Loss: 0.00007064\n",
      "Epoch: 15930/30000, Loss: 0.00004231\n",
      "Epoch: 15940/30000, Loss: 0.00006913\n",
      "Epoch: 15950/30000, Loss: 0.00002168\n",
      "Epoch: 15960/30000, Loss: 0.00001122\n",
      "Epoch: 15970/30000, Loss: 0.00001063\n",
      "Epoch: 15980/30000, Loss: 0.00001641\n",
      "Epoch: 15990/30000, Loss: 0.00002630\n",
      "Epoch: 16000/30000, Loss: 0.00004877\n",
      "Epoch: 16010/30000, Loss: 0.00009608\n",
      "Epoch: 16020/30000, Loss: 0.00005998\n",
      "Epoch: 16030/30000, Loss: 0.00003602\n",
      "Epoch: 16040/30000, Loss: 0.00002035\n",
      "Epoch: 16050/30000, Loss: 0.00006685\n",
      "Epoch: 16060/30000, Loss: 0.00010598\n",
      "Epoch: 16070/30000, Loss: 0.00005135\n",
      "Epoch: 16080/30000, Loss: 0.00001975\n",
      "Epoch: 16090/30000, Loss: 0.00001321\n",
      "Epoch: 16100/30000, Loss: 0.00001566\n",
      "Epoch: 16110/30000, Loss: 0.00007045\n",
      "Epoch: 16120/30000, Loss: 0.00010335\n",
      "Epoch: 16130/30000, Loss: 0.00010148\n",
      "Epoch: 16140/30000, Loss: 0.00002112\n",
      "Epoch: 16150/30000, Loss: 0.00002739\n",
      "Epoch: 16160/30000, Loss: 0.00002488\n",
      "Epoch: 16170/30000, Loss: 0.00004578\n",
      "Epoch: 16180/30000, Loss: 0.00008918\n",
      "Epoch: 16190/30000, Loss: 0.00000957\n",
      "Epoch: 16200/30000, Loss: 0.00002627\n",
      "Epoch: 16210/30000, Loss: 0.00002762\n",
      "Epoch: 16220/30000, Loss: 0.00006380\n",
      "Epoch: 16230/30000, Loss: 0.00012612\n",
      "Epoch: 16240/30000, Loss: 0.00002652\n",
      "Epoch: 16250/30000, Loss: 0.00002159\n",
      "Epoch: 16260/30000, Loss: 0.00004107\n",
      "Epoch: 16270/30000, Loss: 0.00006640\n",
      "Epoch: 16280/30000, Loss: 0.00001969\n",
      "Epoch: 16290/30000, Loss: 0.00002673\n",
      "Epoch: 16300/30000, Loss: 0.00032305\n",
      "Epoch: 16310/30000, Loss: 0.00010385\n",
      "Epoch: 16320/30000, Loss: 0.00002060\n",
      "Epoch: 16330/30000, Loss: 0.00001287\n",
      "Epoch: 16340/30000, Loss: 0.00000988\n",
      "Epoch: 16350/30000, Loss: 0.00001951\n",
      "Epoch: 16360/30000, Loss: 0.00010254\n",
      "Epoch: 16370/30000, Loss: 0.00006818\n",
      "Epoch: 16380/30000, Loss: 0.00005567\n",
      "Epoch: 16390/30000, Loss: 0.00001596\n",
      "Epoch: 16400/30000, Loss: 0.00001308\n",
      "Epoch: 16410/30000, Loss: 0.00002195\n",
      "Epoch: 16420/30000, Loss: 0.00013596\n",
      "Epoch: 16430/30000, Loss: 0.00001254\n",
      "Epoch: 16440/30000, Loss: 0.00002465\n",
      "Epoch: 16450/30000, Loss: 0.00001720\n",
      "Epoch: 16460/30000, Loss: 0.00001545\n",
      "Epoch: 16470/30000, Loss: 0.00001877\n",
      "Epoch: 16480/30000, Loss: 0.00006820\n",
      "Epoch: 16490/30000, Loss: 0.00015828\n",
      "Epoch: 16500/30000, Loss: 0.00006554\n",
      "Epoch: 16510/30000, Loss: 0.00002572\n",
      "Epoch: 16520/30000, Loss: 0.00001263\n",
      "Epoch: 16530/30000, Loss: 0.00001118\n",
      "Epoch: 16540/30000, Loss: 0.00001223\n",
      "Epoch: 16550/30000, Loss: 0.00006224\n",
      "Epoch: 16560/30000, Loss: 0.00026867\n",
      "Epoch: 16570/30000, Loss: 0.00005854\n",
      "Epoch: 16580/30000, Loss: 0.00003898\n",
      "Epoch: 16590/30000, Loss: 0.00001613\n",
      "Epoch: 16600/30000, Loss: 0.00002434\n",
      "Epoch: 16610/30000, Loss: 0.00006039\n",
      "Epoch: 16620/30000, Loss: 0.00004384\n",
      "Epoch: 16630/30000, Loss: 0.00001688\n",
      "Epoch: 16640/30000, Loss: 0.00000896\n",
      "Epoch: 16650/30000, Loss: 0.00001288\n",
      "Epoch: 16660/30000, Loss: 0.00003366\n",
      "Epoch: 16670/30000, Loss: 0.00002814\n",
      "Epoch: 16680/30000, Loss: 0.00006512\n",
      "Epoch: 16690/30000, Loss: 0.00005518\n",
      "Epoch: 16700/30000, Loss: 0.00014534\n",
      "Epoch: 16710/30000, Loss: 0.00011024\n",
      "Epoch: 16720/30000, Loss: 0.00003383\n",
      "Epoch: 16730/30000, Loss: 0.00002057\n",
      "Epoch: 16740/30000, Loss: 0.00001106\n",
      "Epoch: 16750/30000, Loss: 0.00000634\n",
      "Epoch: 16760/30000, Loss: 0.00001121\n",
      "Epoch: 16770/30000, Loss: 0.00002482\n",
      "Epoch: 16780/30000, Loss: 0.00003977\n",
      "Epoch: 16790/30000, Loss: 0.00005227\n",
      "Epoch: 16800/30000, Loss: 0.00009359\n",
      "Epoch: 16810/30000, Loss: 0.00010461\n",
      "Epoch: 16820/30000, Loss: 0.00005282\n",
      "Epoch: 16830/30000, Loss: 0.00000980\n",
      "Epoch: 16840/30000, Loss: 0.00002195\n",
      "Epoch: 16850/30000, Loss: 0.00002716\n",
      "Epoch: 16860/30000, Loss: 0.00005515\n",
      "Epoch: 16870/30000, Loss: 0.00004480\n",
      "Epoch: 16880/30000, Loss: 0.00001555\n",
      "Epoch: 16890/30000, Loss: 0.00011090\n",
      "Epoch: 16900/30000, Loss: 0.00009664\n",
      "Epoch: 16910/30000, Loss: 0.00002234\n",
      "Epoch: 16920/30000, Loss: 0.00001937\n",
      "Epoch: 16930/30000, Loss: 0.00005067\n",
      "Epoch: 16940/30000, Loss: 0.00007073\n",
      "Epoch: 16950/30000, Loss: 0.00000609\n",
      "Epoch: 16960/30000, Loss: 0.00002865\n",
      "Epoch: 16970/30000, Loss: 0.00005131\n",
      "Epoch: 16980/30000, Loss: 0.00004869\n",
      "Epoch: 16990/30000, Loss: 0.00003990\n",
      "Epoch: 17000/30000, Loss: 0.00008157\n",
      "Epoch: 17010/30000, Loss: 0.00013633\n",
      "Epoch: 17020/30000, Loss: 0.00001394\n",
      "Epoch: 17030/30000, Loss: 0.00001997\n",
      "Epoch: 17040/30000, Loss: 0.00001877\n",
      "Epoch: 17050/30000, Loss: 0.00000985\n",
      "Epoch: 17060/30000, Loss: 0.00001433\n",
      "Epoch: 17070/30000, Loss: 0.00006544\n",
      "Epoch: 17080/30000, Loss: 0.00024380\n",
      "Epoch: 17090/30000, Loss: 0.00005187\n",
      "Epoch: 17100/30000, Loss: 0.00001519\n",
      "Epoch: 17110/30000, Loss: 0.00001947\n",
      "Epoch: 17120/30000, Loss: 0.00002291\n",
      "Epoch: 17130/30000, Loss: 0.00006725\n",
      "Epoch: 17140/30000, Loss: 0.00002709\n",
      "Epoch: 17150/30000, Loss: 0.00001734\n",
      "Epoch: 17160/30000, Loss: 0.00001068\n",
      "Epoch: 17170/30000, Loss: 0.00005757\n",
      "Epoch: 17180/30000, Loss: 0.00021829\n",
      "Epoch: 17190/30000, Loss: 0.00004139\n",
      "Epoch: 17200/30000, Loss: 0.00003607\n",
      "Epoch: 17210/30000, Loss: 0.00002401\n",
      "Epoch: 17220/30000, Loss: 0.00006883\n",
      "Epoch: 17230/30000, Loss: 0.00004238\n",
      "Epoch: 17240/30000, Loss: 0.00001718\n",
      "Epoch: 17250/30000, Loss: 0.00001134\n",
      "Epoch: 17260/30000, Loss: 0.00001111\n",
      "Epoch: 17270/30000, Loss: 0.00002519\n",
      "Epoch: 17280/30000, Loss: 0.00009402\n",
      "Epoch: 17290/30000, Loss: 0.00001850\n",
      "Epoch: 17300/30000, Loss: 0.00001786\n",
      "Epoch: 17310/30000, Loss: 0.00022097\n",
      "Epoch: 17320/30000, Loss: 0.00017030\n",
      "Epoch: 17330/30000, Loss: 0.00002464\n",
      "Epoch: 17340/30000, Loss: 0.00003338\n",
      "Epoch: 17350/30000, Loss: 0.00002155\n",
      "Epoch: 17360/30000, Loss: 0.00002782\n",
      "Epoch: 17370/30000, Loss: 0.00002929\n",
      "Epoch: 17380/30000, Loss: 0.00011497\n",
      "Epoch: 17390/30000, Loss: 0.00004589\n",
      "Epoch: 17400/30000, Loss: 0.00001912\n",
      "Epoch: 17410/30000, Loss: 0.00001970\n",
      "Epoch: 17420/30000, Loss: 0.00000844\n",
      "Epoch: 17430/30000, Loss: 0.00000756\n",
      "Epoch: 17440/30000, Loss: 0.00001152\n",
      "Epoch: 17450/30000, Loss: 0.00001466\n",
      "Epoch: 17460/30000, Loss: 0.00003991\n",
      "Epoch: 17470/30000, Loss: 0.00074498\n",
      "Epoch: 17480/30000, Loss: 0.00020632\n",
      "Epoch: 17490/30000, Loss: 0.00007093\n",
      "Epoch: 17500/30000, Loss: 0.00003205\n",
      "Epoch: 17510/30000, Loss: 0.00001458\n",
      "Epoch: 17520/30000, Loss: 0.00001555\n",
      "Epoch: 17530/30000, Loss: 0.00014381\n",
      "Epoch: 17540/30000, Loss: 0.00004551\n",
      "Epoch: 17550/30000, Loss: 0.00002108\n",
      "Epoch: 17560/30000, Loss: 0.00001030\n",
      "Epoch: 17570/30000, Loss: 0.00000877\n",
      "Epoch: 17580/30000, Loss: 0.00000540\n",
      "Epoch: 17590/30000, Loss: 0.00002060\n",
      "Epoch: 17600/30000, Loss: 0.00001748\n",
      "Epoch: 17610/30000, Loss: 0.00002137\n",
      "Epoch: 17620/30000, Loss: 0.00002782\n",
      "Epoch: 17630/30000, Loss: 0.00009582\n",
      "Epoch: 17640/30000, Loss: 0.00005216\n",
      "Epoch: 17650/30000, Loss: 0.00004307\n",
      "Epoch: 17660/30000, Loss: 0.00007619\n",
      "Epoch: 17670/30000, Loss: 0.00000582\n",
      "Epoch: 17680/30000, Loss: 0.00002186\n",
      "Epoch: 17690/30000, Loss: 0.00001940\n",
      "Epoch: 17700/30000, Loss: 0.00004148\n",
      "Epoch: 17710/30000, Loss: 0.00009871\n",
      "Epoch: 17720/30000, Loss: 0.00002397\n",
      "Epoch: 17730/30000, Loss: 0.00004398\n",
      "Epoch: 17740/30000, Loss: 0.00005866\n",
      "Epoch: 17750/30000, Loss: 0.00002013\n",
      "Epoch: 17760/30000, Loss: 0.00010379\n",
      "Epoch: 17770/30000, Loss: 0.00006322\n",
      "Epoch: 17780/30000, Loss: 0.00005219\n",
      "Epoch: 17790/30000, Loss: 0.00001052\n",
      "Epoch: 17800/30000, Loss: 0.00000793\n",
      "Epoch: 17810/30000, Loss: 0.00010600\n",
      "Epoch: 17820/30000, Loss: 0.00003131\n",
      "Epoch: 17830/30000, Loss: 0.00002093\n",
      "Epoch: 17840/30000, Loss: 0.00002191\n",
      "Epoch: 17850/30000, Loss: 0.00005754\n",
      "Epoch: 17860/30000, Loss: 0.00007061\n",
      "Epoch: 17870/30000, Loss: 0.00002597\n",
      "Epoch: 17880/30000, Loss: 0.00002172\n",
      "Epoch: 17890/30000, Loss: 0.00001983\n",
      "Epoch: 17900/30000, Loss: 0.00003257\n",
      "Epoch: 17910/30000, Loss: 0.00009099\n",
      "Epoch: 17920/30000, Loss: 0.00002116\n",
      "Epoch: 17930/30000, Loss: 0.00007733\n",
      "Epoch: 17940/30000, Loss: 0.00004963\n",
      "Epoch: 17950/30000, Loss: 0.00003619\n",
      "Epoch: 17960/30000, Loss: 0.00001862\n",
      "Epoch: 17970/30000, Loss: 0.00003243\n",
      "Epoch: 17980/30000, Loss: 0.00009865\n",
      "Epoch: 17990/30000, Loss: 0.00004556\n",
      "Epoch: 18000/30000, Loss: 0.00005087\n",
      "Epoch: 18010/30000, Loss: 0.00001587\n",
      "Epoch: 18020/30000, Loss: 0.00002147\n",
      "Epoch: 18030/30000, Loss: 0.00016096\n",
      "Epoch: 18040/30000, Loss: 0.00003186\n",
      "Epoch: 18050/30000, Loss: 0.00002836\n",
      "Epoch: 18060/30000, Loss: 0.00002189\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 18070/30000, Loss: 0.00006439\n",
      "Epoch: 18080/30000, Loss: 0.00005658\n",
      "Epoch: 18090/30000, Loss: 0.00001977\n",
      "Epoch: 18100/30000, Loss: 0.00001321\n",
      "Epoch: 18110/30000, Loss: 0.00005598\n",
      "Epoch: 18120/30000, Loss: 0.00011396\n",
      "Epoch: 18130/30000, Loss: 0.00004005\n",
      "Epoch: 18140/30000, Loss: 0.00001898\n",
      "Epoch: 18150/30000, Loss: 0.00005317\n",
      "Epoch: 18160/30000, Loss: 0.00006465\n",
      "Epoch: 18170/30000, Loss: 0.00002098\n",
      "Epoch: 18180/30000, Loss: 0.00005230\n",
      "Epoch: 18190/30000, Loss: 0.00007772\n",
      "Epoch: 18200/30000, Loss: 0.00001844\n",
      "Epoch: 18210/30000, Loss: 0.00007376\n",
      "Epoch: 18220/30000, Loss: 0.00002536\n",
      "Epoch: 18230/30000, Loss: 0.00003666\n",
      "Epoch: 18240/30000, Loss: 0.00008525\n",
      "Epoch: 18250/30000, Loss: 0.00001400\n",
      "Epoch: 18260/30000, Loss: 0.00002759\n",
      "Epoch: 18270/30000, Loss: 0.00009810\n",
      "Epoch: 18280/30000, Loss: 0.00002700\n",
      "Epoch: 18290/30000, Loss: 0.00002313\n",
      "Epoch: 18300/30000, Loss: 0.00007465\n",
      "Epoch: 18310/30000, Loss: 0.00008434\n",
      "Epoch: 18320/30000, Loss: 0.00004088\n",
      "Epoch: 18330/30000, Loss: 0.00002205\n",
      "Epoch: 18340/30000, Loss: 0.00001128\n",
      "Epoch: 18350/30000, Loss: 0.00001913\n",
      "Epoch: 18360/30000, Loss: 0.00002764\n",
      "Epoch: 18370/30000, Loss: 0.00012150\n",
      "Epoch: 18380/30000, Loss: 0.00008612\n",
      "Epoch: 18390/30000, Loss: 0.00003505\n",
      "Epoch: 18400/30000, Loss: 0.00001540\n",
      "Epoch: 18410/30000, Loss: 0.00001343\n",
      "Epoch: 18420/30000, Loss: 0.00011117\n",
      "Epoch: 18430/30000, Loss: 0.00002578\n",
      "Epoch: 18440/30000, Loss: 0.00001264\n",
      "Epoch: 18450/30000, Loss: 0.00001686\n",
      "Epoch: 18460/30000, Loss: 0.00001086\n",
      "Epoch: 18470/30000, Loss: 0.00001841\n",
      "Epoch: 18480/30000, Loss: 0.00002924\n",
      "Epoch: 18490/30000, Loss: 0.00012404\n",
      "Epoch: 18500/30000, Loss: 0.00005208\n",
      "Epoch: 18510/30000, Loss: 0.00002396\n",
      "Epoch: 18520/30000, Loss: 0.00001847\n",
      "Epoch: 18530/30000, Loss: 0.00015484\n",
      "Epoch: 18540/30000, Loss: 0.00013945\n",
      "Epoch: 18550/30000, Loss: 0.00002122\n",
      "Epoch: 18560/30000, Loss: 0.00001786\n",
      "Epoch: 18570/30000, Loss: 0.00001421\n",
      "Epoch: 18580/30000, Loss: 0.00002208\n",
      "Epoch: 18590/30000, Loss: 0.00005728\n",
      "Epoch: 18600/30000, Loss: 0.00010324\n",
      "Epoch: 18610/30000, Loss: 0.00003149\n",
      "Epoch: 18620/30000, Loss: 0.00001517\n",
      "Epoch: 18630/30000, Loss: 0.00002859\n",
      "Epoch: 18640/30000, Loss: 0.00003326\n",
      "Epoch: 18650/30000, Loss: 0.00003651\n",
      "Epoch: 18660/30000, Loss: 0.00004278\n",
      "Epoch: 18670/30000, Loss: 0.00002490\n",
      "Epoch: 18680/30000, Loss: 0.00002910\n",
      "Epoch: 18690/30000, Loss: 0.00025106\n",
      "Epoch: 18700/30000, Loss: 0.00010687\n",
      "Epoch: 18710/30000, Loss: 0.00002423\n",
      "Epoch: 18720/30000, Loss: 0.00003316\n",
      "Epoch: 18730/30000, Loss: 0.00007201\n",
      "Epoch: 18740/30000, Loss: 0.00005248\n",
      "Epoch: 18750/30000, Loss: 0.00001918\n",
      "Epoch: 18760/30000, Loss: 0.00000977\n",
      "Epoch: 18770/30000, Loss: 0.00000834\n",
      "Epoch: 18780/30000, Loss: 0.00001071\n",
      "Epoch: 18790/30000, Loss: 0.00001614\n",
      "Epoch: 18800/30000, Loss: 0.00005535\n",
      "Epoch: 18810/30000, Loss: 0.00010295\n",
      "Epoch: 18820/30000, Loss: 0.00013598\n",
      "Epoch: 18830/30000, Loss: 0.00005434\n",
      "Epoch: 18840/30000, Loss: 0.00002336\n",
      "Epoch: 18850/30000, Loss: 0.00002851\n",
      "Epoch: 18860/30000, Loss: 0.00007380\n",
      "Epoch: 18870/30000, Loss: 0.00002246\n",
      "Epoch: 18880/30000, Loss: 0.00001840\n",
      "Epoch: 18890/30000, Loss: 0.00004779\n",
      "Epoch: 18900/30000, Loss: 0.00005007\n",
      "Epoch: 18910/30000, Loss: 0.00003210\n",
      "Epoch: 18920/30000, Loss: 0.00002231\n",
      "Epoch: 18930/30000, Loss: 0.00005082\n",
      "Epoch: 18940/30000, Loss: 0.00021896\n",
      "Epoch: 18950/30000, Loss: 0.00004248\n",
      "Epoch: 18960/30000, Loss: 0.00001194\n",
      "Epoch: 18970/30000, Loss: 0.00001242\n",
      "Epoch: 18980/30000, Loss: 0.00007568\n",
      "Epoch: 18990/30000, Loss: 0.00008439\n",
      "Epoch: 19000/30000, Loss: 0.00002961\n",
      "Epoch: 19010/30000, Loss: 0.00001162\n",
      "Epoch: 19020/30000, Loss: 0.00000697\n",
      "Epoch: 19030/30000, Loss: 0.00002125\n",
      "Epoch: 19040/30000, Loss: 0.00028607\n",
      "Epoch: 19050/30000, Loss: 0.00010122\n",
      "Epoch: 19060/30000, Loss: 0.00003417\n",
      "Epoch: 19070/30000, Loss: 0.00001380\n",
      "Epoch: 19080/30000, Loss: 0.00000835\n",
      "Epoch: 19090/30000, Loss: 0.00000867\n",
      "Epoch: 19100/30000, Loss: 0.00002502\n",
      "Epoch: 19110/30000, Loss: 0.00022526\n",
      "Epoch: 19120/30000, Loss: 0.00006101\n",
      "Epoch: 19130/30000, Loss: 0.00002053\n",
      "Epoch: 19140/30000, Loss: 0.00003143\n",
      "Epoch: 19150/30000, Loss: 0.00014725\n",
      "Epoch: 19160/30000, Loss: 0.00002784\n",
      "Epoch: 19170/30000, Loss: 0.00000942\n",
      "Epoch: 19180/30000, Loss: 0.00001057\n",
      "Epoch: 19190/30000, Loss: 0.00000975\n",
      "Epoch: 19200/30000, Loss: 0.00002684\n",
      "Epoch: 19210/30000, Loss: 0.00008981\n",
      "Epoch: 19220/30000, Loss: 0.00010693\n",
      "Epoch: 19230/30000, Loss: 0.00003310\n",
      "Epoch: 19240/30000, Loss: 0.00001393\n",
      "Epoch: 19250/30000, Loss: 0.00001918\n",
      "Epoch: 19260/30000, Loss: 0.00004460\n",
      "Epoch: 19270/30000, Loss: 0.00005930\n",
      "Epoch: 19280/30000, Loss: 0.00002770\n",
      "Epoch: 19290/30000, Loss: 0.00017236\n",
      "Epoch: 19300/30000, Loss: 0.00002620\n",
      "Epoch: 19310/30000, Loss: 0.00002538\n",
      "Epoch: 19320/30000, Loss: 0.00001391\n",
      "Epoch: 19330/30000, Loss: 0.00001160\n",
      "Epoch: 19340/30000, Loss: 0.00001156\n",
      "Epoch: 19350/30000, Loss: 0.00005322\n",
      "Epoch: 19360/30000, Loss: 0.00016886\n",
      "Epoch: 19370/30000, Loss: 0.00004885\n",
      "Epoch: 19380/30000, Loss: 0.00001815\n",
      "Epoch: 19390/30000, Loss: 0.00003080\n",
      "Epoch: 19400/30000, Loss: 0.00142177\n",
      "Epoch: 19410/30000, Loss: 0.00051358\n",
      "Epoch: 19420/30000, Loss: 0.00024132\n",
      "Epoch: 19430/30000, Loss: 0.00018546\n",
      "Epoch: 19440/30000, Loss: 0.00011460\n",
      "Epoch: 19450/30000, Loss: 0.00005565\n",
      "Epoch: 19460/30000, Loss: 0.00004180\n",
      "Epoch: 19470/30000, Loss: 0.00003062\n",
      "Epoch: 19480/30000, Loss: 0.00003231\n",
      "Epoch: 19490/30000, Loss: 0.00002648\n",
      "Epoch: 19500/30000, Loss: 0.00021978\n",
      "Epoch: 19510/30000, Loss: 0.00023763\n",
      "Epoch: 19520/30000, Loss: 0.00013414\n",
      "Epoch: 19530/30000, Loss: 0.00006427\n",
      "Epoch: 19540/30000, Loss: 0.00004297\n",
      "Epoch: 19550/30000, Loss: 0.00003462\n",
      "Epoch: 19560/30000, Loss: 0.00002824\n",
      "Epoch: 19570/30000, Loss: 0.00002753\n",
      "Epoch: 19580/30000, Loss: 0.00002648\n",
      "Epoch: 19590/30000, Loss: 0.00002715\n",
      "Epoch: 19600/30000, Loss: 0.00003240\n",
      "Epoch: 19610/30000, Loss: 0.00003166\n",
      "Epoch: 19620/30000, Loss: 0.00005058\n",
      "Epoch: 19630/30000, Loss: 0.00010808\n",
      "Epoch: 19640/30000, Loss: 0.00005907\n",
      "Epoch: 19650/30000, Loss: 0.00003401\n",
      "Epoch: 19660/30000, Loss: 0.00002454\n",
      "Epoch: 19670/30000, Loss: 0.00002244\n",
      "Epoch: 19680/30000, Loss: 0.00002854\n",
      "Epoch: 19690/30000, Loss: 0.00015472\n",
      "Epoch: 19700/30000, Loss: 0.00022060\n",
      "Epoch: 19710/30000, Loss: 0.00004630\n",
      "Epoch: 19720/30000, Loss: 0.00004842\n",
      "Epoch: 19730/30000, Loss: 0.00003240\n",
      "Epoch: 19740/30000, Loss: 0.00003261\n",
      "Epoch: 19750/30000, Loss: 0.00007424\n",
      "Epoch: 19760/30000, Loss: 0.00006911\n",
      "Epoch: 19770/30000, Loss: 0.00003516\n",
      "Epoch: 19780/30000, Loss: 0.00002901\n",
      "Epoch: 19790/30000, Loss: 0.00001976\n",
      "Epoch: 19800/30000, Loss: 0.00001569\n",
      "Epoch: 19810/30000, Loss: 0.00001452\n",
      "Epoch: 19820/30000, Loss: 0.00001776\n",
      "Epoch: 19830/30000, Loss: 0.00002674\n",
      "Epoch: 19840/30000, Loss: 0.00002309\n",
      "Epoch: 19850/30000, Loss: 0.00002319\n",
      "Epoch: 19860/30000, Loss: 0.00002688\n",
      "Epoch: 19870/30000, Loss: 0.00002987\n",
      "Epoch: 19880/30000, Loss: 0.00003097\n",
      "Epoch: 19890/30000, Loss: 0.00003495\n",
      "Epoch: 19900/30000, Loss: 0.00003453\n",
      "Epoch: 19910/30000, Loss: 0.00003138\n",
      "Epoch: 19920/30000, Loss: 0.00002435\n",
      "Epoch: 19930/30000, Loss: 0.00001820\n",
      "Epoch: 19940/30000, Loss: 0.00002342\n",
      "Epoch: 19950/30000, Loss: 0.00005659\n",
      "Epoch: 19960/30000, Loss: 0.00022258\n",
      "Epoch: 19970/30000, Loss: 0.00005395\n",
      "Epoch: 19980/30000, Loss: 0.00003607\n",
      "Epoch: 19990/30000, Loss: 0.00002352\n",
      "Epoch: 20000/30000, Loss: 0.00006248\n",
      "Epoch: 20010/30000, Loss: 0.00003715\n",
      "Epoch: 20020/30000, Loss: 0.00002428\n",
      "Epoch: 20030/30000, Loss: 0.00001739\n",
      "Epoch: 20040/30000, Loss: 0.00002000\n",
      "Epoch: 20050/30000, Loss: 0.00006555\n",
      "Epoch: 20060/30000, Loss: 0.00022099\n",
      "Epoch: 20070/30000, Loss: 0.00005538\n",
      "Epoch: 20080/30000, Loss: 0.00003794\n",
      "Epoch: 20090/30000, Loss: 0.00002457\n",
      "Epoch: 20100/30000, Loss: 0.00002245\n",
      "Epoch: 20110/30000, Loss: 0.00002062\n",
      "Epoch: 20120/30000, Loss: 0.00003287\n",
      "Epoch: 20130/30000, Loss: 0.00003724\n",
      "Epoch: 20140/30000, Loss: 0.00006601\n",
      "Epoch: 20150/30000, Loss: 0.00008175\n",
      "Epoch: 20160/30000, Loss: 0.00016695\n",
      "Epoch: 20170/30000, Loss: 0.00003262\n",
      "Epoch: 20180/30000, Loss: 0.00002098\n",
      "Epoch: 20190/30000, Loss: 0.00002425\n",
      "Epoch: 20200/30000, Loss: 0.00001471\n",
      "Epoch: 20210/30000, Loss: 0.00002578\n",
      "Epoch: 20220/30000, Loss: 0.00009127\n",
      "Epoch: 20230/30000, Loss: 0.00011874\n",
      "Epoch: 20240/30000, Loss: 0.00004785\n",
      "Epoch: 20250/30000, Loss: 0.00002943\n",
      "Epoch: 20260/30000, Loss: 0.00004132\n",
      "Epoch: 20270/30000, Loss: 0.00012577\n",
      "Epoch: 20280/30000, Loss: 0.00003107\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 20290/30000, Loss: 0.00004008\n",
      "Epoch: 20300/30000, Loss: 0.00001892\n",
      "Epoch: 20310/30000, Loss: 0.00005076\n",
      "Epoch: 20320/30000, Loss: 0.00004830\n",
      "Epoch: 20330/30000, Loss: 0.00005922\n",
      "Epoch: 20340/30000, Loss: 0.00023878\n",
      "Epoch: 20350/30000, Loss: 0.00008860\n",
      "Epoch: 20360/30000, Loss: 0.00004182\n",
      "Epoch: 20370/30000, Loss: 0.00002555\n",
      "Epoch: 20380/30000, Loss: 0.00002036\n",
      "Epoch: 20390/30000, Loss: 0.00004004\n",
      "Epoch: 20400/30000, Loss: 0.00004206\n",
      "Epoch: 20410/30000, Loss: 0.00004339\n",
      "Epoch: 20420/30000, Loss: 0.00011324\n",
      "Epoch: 20430/30000, Loss: 0.00002865\n",
      "Epoch: 20440/30000, Loss: 0.00003885\n",
      "Epoch: 20450/30000, Loss: 0.00004221\n",
      "Epoch: 20460/30000, Loss: 0.00004723\n",
      "Epoch: 20470/30000, Loss: 0.00010649\n",
      "Epoch: 20480/30000, Loss: 0.00008283\n",
      "Epoch: 20490/30000, Loss: 0.00005471\n",
      "Epoch: 20500/30000, Loss: 0.00004014\n",
      "Epoch: 20510/30000, Loss: 0.00004370\n",
      "Epoch: 20520/30000, Loss: 0.00003519\n",
      "Epoch: 20530/30000, Loss: 0.00003522\n",
      "Epoch: 20540/30000, Loss: 0.00005085\n",
      "Epoch: 20550/30000, Loss: 0.00008395\n",
      "Epoch: 20560/30000, Loss: 0.00003855\n",
      "Epoch: 20570/30000, Loss: 0.00003991\n",
      "Epoch: 20580/30000, Loss: 0.00006692\n",
      "Epoch: 20590/30000, Loss: 0.00010252\n",
      "Epoch: 20600/30000, Loss: 0.00004277\n",
      "Epoch: 20610/30000, Loss: 0.00003292\n",
      "Epoch: 20620/30000, Loss: 0.00003473\n",
      "Epoch: 20630/30000, Loss: 0.00004453\n",
      "Epoch: 20640/30000, Loss: 0.00010069\n",
      "Epoch: 20650/30000, Loss: 0.00004821\n",
      "Epoch: 20660/30000, Loss: 0.00004546\n",
      "Epoch: 20670/30000, Loss: 0.00005487\n",
      "Epoch: 20680/30000, Loss: 0.00003719\n",
      "Epoch: 20690/30000, Loss: 0.00007830\n",
      "Epoch: 20700/30000, Loss: 0.00014314\n",
      "Epoch: 20710/30000, Loss: 0.00006454\n",
      "Epoch: 20720/30000, Loss: 0.00003671\n",
      "Epoch: 20730/30000, Loss: 0.00002429\n",
      "Epoch: 20740/30000, Loss: 0.00003910\n",
      "Epoch: 20750/30000, Loss: 0.00006851\n",
      "Epoch: 20760/30000, Loss: 0.00005618\n",
      "Epoch: 20770/30000, Loss: 0.00004176\n",
      "Epoch: 20780/30000, Loss: 0.00009145\n",
      "Epoch: 20790/30000, Loss: 0.00005260\n",
      "Epoch: 20800/30000, Loss: 0.00003773\n",
      "Epoch: 20810/30000, Loss: 0.00003247\n",
      "Epoch: 20820/30000, Loss: 0.00004793\n",
      "Epoch: 20830/30000, Loss: 0.00004706\n",
      "Epoch: 20840/30000, Loss: 0.00003738\n",
      "Epoch: 20850/30000, Loss: 0.00021862\n",
      "Epoch: 20860/30000, Loss: 0.00008705\n",
      "Epoch: 20870/30000, Loss: 0.00008081\n",
      "Epoch: 20880/30000, Loss: 0.00003683\n",
      "Epoch: 20890/30000, Loss: 0.00002564\n",
      "Epoch: 20900/30000, Loss: 0.00004916\n",
      "Epoch: 20910/30000, Loss: 0.00004683\n",
      "Epoch: 20920/30000, Loss: 0.00003073\n",
      "Epoch: 20930/30000, Loss: 0.00003155\n",
      "Epoch: 20940/30000, Loss: 0.00003006\n",
      "Epoch: 20950/30000, Loss: 0.00005430\n",
      "Epoch: 20960/30000, Loss: 0.00010719\n",
      "Epoch: 20970/30000, Loss: 0.00003618\n",
      "Epoch: 20980/30000, Loss: 0.00003328\n",
      "Epoch: 20990/30000, Loss: 0.00003896\n",
      "Epoch: 21000/30000, Loss: 0.00005920\n",
      "Epoch: 21010/30000, Loss: 0.00006778\n",
      "Epoch: 21020/30000, Loss: 0.00003174\n",
      "Epoch: 21030/30000, Loss: 0.00002278\n",
      "Epoch: 21040/30000, Loss: 0.00005776\n",
      "Epoch: 21050/30000, Loss: 0.00010875\n",
      "Epoch: 21060/30000, Loss: 0.00016516\n",
      "Epoch: 21070/30000, Loss: 0.00007346\n",
      "Epoch: 21080/30000, Loss: 0.00004107\n",
      "Epoch: 21090/30000, Loss: 0.00002822\n",
      "Epoch: 21100/30000, Loss: 0.00002672\n",
      "Epoch: 21110/30000, Loss: 0.00004439\n",
      "Epoch: 21120/30000, Loss: 0.00005936\n",
      "Epoch: 21130/30000, Loss: 0.00005785\n",
      "Epoch: 21140/30000, Loss: 0.00004239\n",
      "Epoch: 21150/30000, Loss: 0.00005240\n",
      "Epoch: 21160/30000, Loss: 0.00010350\n",
      "Epoch: 21170/30000, Loss: 0.00003728\n",
      "Epoch: 21180/30000, Loss: 0.00004119\n",
      "Epoch: 21190/30000, Loss: 0.00004081\n",
      "Epoch: 21200/30000, Loss: 0.00003357\n",
      "Epoch: 21210/30000, Loss: 0.00006725\n",
      "Epoch: 21220/30000, Loss: 0.00019823\n",
      "Epoch: 21230/30000, Loss: 0.00006459\n",
      "Epoch: 21240/30000, Loss: 0.00003714\n",
      "Epoch: 21250/30000, Loss: 0.00003044\n",
      "Epoch: 21260/30000, Loss: 0.00002770\n",
      "Epoch: 21270/30000, Loss: 0.00002832\n",
      "Epoch: 21280/30000, Loss: 0.00007334\n",
      "Epoch: 21290/30000, Loss: 0.00012810\n",
      "Epoch: 21300/30000, Loss: 0.00005072\n",
      "Epoch: 21310/30000, Loss: 0.00002402\n",
      "Epoch: 21320/30000, Loss: 0.00002667\n",
      "Epoch: 21330/30000, Loss: 0.00004854\n",
      "Epoch: 21340/30000, Loss: 0.00005053\n",
      "Epoch: 21350/30000, Loss: 0.00007070\n",
      "Epoch: 21360/30000, Loss: 0.00023668\n",
      "Epoch: 21370/30000, Loss: 0.00009221\n",
      "Epoch: 21380/30000, Loss: 0.00004475\n",
      "Epoch: 21390/30000, Loss: 0.00003019\n",
      "Epoch: 21400/30000, Loss: 0.00003847\n",
      "Epoch: 21410/30000, Loss: 0.00003694\n",
      "Epoch: 21420/30000, Loss: 0.00002601\n",
      "Epoch: 21430/30000, Loss: 0.00002551\n",
      "Epoch: 21440/30000, Loss: 0.00005441\n",
      "Epoch: 21450/30000, Loss: 0.00015210\n",
      "Epoch: 21460/30000, Loss: 0.00004195\n",
      "Epoch: 21470/30000, Loss: 0.00003164\n",
      "Epoch: 21480/30000, Loss: 0.00004141\n",
      "Epoch: 21490/30000, Loss: 0.00003594\n",
      "Epoch: 21500/30000, Loss: 0.00004220\n",
      "Epoch: 21510/30000, Loss: 0.00012774\n",
      "Epoch: 21520/30000, Loss: 0.00003910\n",
      "Epoch: 21530/30000, Loss: 0.00003848\n",
      "Epoch: 21540/30000, Loss: 0.00002563\n",
      "Epoch: 21550/30000, Loss: 0.00004463\n",
      "Epoch: 21560/30000, Loss: 0.00006430\n",
      "Epoch: 21570/30000, Loss: 0.00008406\n",
      "Epoch: 21580/30000, Loss: 0.00011781\n",
      "Epoch: 21590/30000, Loss: 0.00003745\n",
      "Epoch: 21600/30000, Loss: 0.00002306\n",
      "Epoch: 21610/30000, Loss: 0.00002510\n",
      "Epoch: 21620/30000, Loss: 0.00003438\n",
      "Epoch: 21630/30000, Loss: 0.00008220\n",
      "Epoch: 21640/30000, Loss: 0.00009363\n",
      "Epoch: 21650/30000, Loss: 0.00003595\n",
      "Epoch: 21660/30000, Loss: 0.00003787\n",
      "Epoch: 21670/30000, Loss: 0.00002803\n",
      "Epoch: 21680/30000, Loss: 0.00016104\n",
      "Epoch: 21690/30000, Loss: 0.00005430\n",
      "Epoch: 21700/30000, Loss: 0.00004815\n",
      "Epoch: 21710/30000, Loss: 0.00004139\n",
      "Epoch: 21720/30000, Loss: 0.00003301\n",
      "Epoch: 21730/30000, Loss: 0.00006220\n",
      "Epoch: 21740/30000, Loss: 0.00005327\n",
      "Epoch: 21750/30000, Loss: 0.00004724\n",
      "Epoch: 21760/30000, Loss: 0.00003491\n",
      "Epoch: 21770/30000, Loss: 0.00003827\n",
      "Epoch: 21780/30000, Loss: 0.00004227\n",
      "Epoch: 21790/30000, Loss: 0.00030994\n",
      "Epoch: 21800/30000, Loss: 0.00013414\n",
      "Epoch: 21810/30000, Loss: 0.00005224\n",
      "Epoch: 21820/30000, Loss: 0.00001897\n",
      "Epoch: 21830/30000, Loss: 0.00001761\n",
      "Epoch: 21840/30000, Loss: 0.00001956\n",
      "Epoch: 21850/30000, Loss: 0.00003701\n",
      "Epoch: 21860/30000, Loss: 0.00004825\n",
      "Epoch: 21870/30000, Loss: 0.00005922\n",
      "Epoch: 21880/30000, Loss: 0.00005248\n",
      "Epoch: 21890/30000, Loss: 0.00004842\n",
      "Epoch: 21900/30000, Loss: 0.00003160\n",
      "Epoch: 21910/30000, Loss: 0.00002238\n",
      "Epoch: 21920/30000, Loss: 0.00003004\n",
      "Epoch: 21930/30000, Loss: 0.00016876\n",
      "Epoch: 21940/30000, Loss: 0.00005183\n",
      "Epoch: 21950/30000, Loss: 0.00003980\n",
      "Epoch: 21960/30000, Loss: 0.00002736\n",
      "Epoch: 21970/30000, Loss: 0.00002360\n",
      "Epoch: 21980/30000, Loss: 0.00002947\n",
      "Epoch: 21990/30000, Loss: 0.00004682\n",
      "Epoch: 22000/30000, Loss: 0.00005961\n",
      "Epoch: 22010/30000, Loss: 0.00005128\n",
      "Epoch: 22020/30000, Loss: 0.00006959\n",
      "Epoch: 22030/30000, Loss: 0.00007579\n",
      "Epoch: 22040/30000, Loss: 0.00002504\n",
      "Epoch: 22050/30000, Loss: 0.00003147\n",
      "Epoch: 22060/30000, Loss: 0.00003838\n",
      "Epoch: 22070/30000, Loss: 0.00006349\n",
      "Epoch: 22080/30000, Loss: 0.00014337\n",
      "Epoch: 22090/30000, Loss: 0.00005048\n",
      "Epoch: 22100/30000, Loss: 0.00005049\n",
      "Epoch: 22110/30000, Loss: 0.00003473\n",
      "Epoch: 22120/30000, Loss: 0.00003863\n",
      "Epoch: 22130/30000, Loss: 0.00008154\n",
      "Epoch: 22140/30000, Loss: 0.00009582\n",
      "Epoch: 22150/30000, Loss: 0.00002827\n",
      "Epoch: 22160/30000, Loss: 0.00003208\n",
      "Epoch: 22170/30000, Loss: 0.00002594\n",
      "Epoch: 22180/30000, Loss: 0.00004507\n",
      "Epoch: 22190/30000, Loss: 0.00008511\n",
      "Epoch: 22200/30000, Loss: 0.00024880\n",
      "Epoch: 22210/30000, Loss: 0.00008552\n",
      "Epoch: 22220/30000, Loss: 0.00003798\n",
      "Epoch: 22230/30000, Loss: 0.00002055\n",
      "Epoch: 22240/30000, Loss: 0.00001989\n",
      "Epoch: 22250/30000, Loss: 0.00003212\n",
      "Epoch: 22260/30000, Loss: 0.00005861\n",
      "Epoch: 22270/30000, Loss: 0.00005392\n",
      "Epoch: 22280/30000, Loss: 0.00013695\n",
      "Epoch: 22290/30000, Loss: 0.00004638\n",
      "Epoch: 22300/30000, Loss: 0.00004445\n",
      "Epoch: 22310/30000, Loss: 0.00002810\n",
      "Epoch: 22320/30000, Loss: 0.00002195\n",
      "Epoch: 22330/30000, Loss: 0.00003553\n",
      "Epoch: 22340/30000, Loss: 0.00009471\n",
      "Epoch: 22350/30000, Loss: 0.00015102\n",
      "Epoch: 22360/30000, Loss: 0.00004304\n",
      "Epoch: 22370/30000, Loss: 0.00002628\n",
      "Epoch: 22380/30000, Loss: 0.00002236\n",
      "Epoch: 22390/30000, Loss: 0.00004305\n",
      "Epoch: 22400/30000, Loss: 0.00009187\n",
      "Epoch: 22410/30000, Loss: 0.00005434\n",
      "Epoch: 22420/30000, Loss: 0.00004765\n",
      "Epoch: 22430/30000, Loss: 0.00006707\n",
      "Epoch: 22440/30000, Loss: 0.00008213\n",
      "Epoch: 22450/30000, Loss: 0.00003279\n",
      "Epoch: 22460/30000, Loss: 0.00002223\n",
      "Epoch: 22470/30000, Loss: 0.00004129\n",
      "Epoch: 22480/30000, Loss: 0.00026318\n",
      "Epoch: 22490/30000, Loss: 0.00010248\n",
      "Epoch: 22500/30000, Loss: 0.00006339\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 22510/30000, Loss: 0.00004623\n",
      "Epoch: 22520/30000, Loss: 0.00002947\n",
      "Epoch: 22530/30000, Loss: 0.00003120\n",
      "Epoch: 22540/30000, Loss: 0.00002148\n",
      "Epoch: 22550/30000, Loss: 0.00002393\n",
      "Epoch: 22560/30000, Loss: 0.00005732\n",
      "Epoch: 22570/30000, Loss: 0.00029282\n",
      "Epoch: 22580/30000, Loss: 0.00006757\n",
      "Epoch: 22590/30000, Loss: 0.00002571\n",
      "Epoch: 22600/30000, Loss: 0.00002543\n",
      "Epoch: 22610/30000, Loss: 0.00004203\n",
      "Epoch: 22620/30000, Loss: 0.00003798\n",
      "Epoch: 22630/30000, Loss: 0.00003947\n",
      "Epoch: 22640/30000, Loss: 0.00003128\n",
      "Epoch: 22650/30000, Loss: 0.00002307\n",
      "Epoch: 22660/30000, Loss: 0.00003232\n",
      "Epoch: 22670/30000, Loss: 0.00016746\n",
      "Epoch: 22680/30000, Loss: 0.00004805\n",
      "Epoch: 22690/30000, Loss: 0.00003401\n",
      "Epoch: 22700/30000, Loss: 0.00002726\n",
      "Epoch: 22710/30000, Loss: 0.00004972\n",
      "Epoch: 22720/30000, Loss: 0.00003714\n",
      "Epoch: 22730/30000, Loss: 0.00002517\n",
      "Epoch: 22740/30000, Loss: 0.00005562\n",
      "Epoch: 22750/30000, Loss: 0.00020095\n",
      "Epoch: 22760/30000, Loss: 0.00007146\n",
      "Epoch: 22770/30000, Loss: 0.00004142\n",
      "Epoch: 22780/30000, Loss: 0.00005016\n",
      "Epoch: 22790/30000, Loss: 0.00003228\n",
      "Epoch: 22800/30000, Loss: 0.00003058\n",
      "Epoch: 22810/30000, Loss: 0.00002117\n",
      "Epoch: 22820/30000, Loss: 0.00002074\n",
      "Epoch: 22830/30000, Loss: 0.00004529\n",
      "Epoch: 22840/30000, Loss: 0.00033969\n",
      "Epoch: 22850/30000, Loss: 0.00013245\n",
      "Epoch: 22860/30000, Loss: 0.00004369\n",
      "Epoch: 22870/30000, Loss: 0.00001790\n",
      "Epoch: 22880/30000, Loss: 0.00001416\n",
      "Epoch: 22890/30000, Loss: 0.00001800\n",
      "Epoch: 22900/30000, Loss: 0.00003157\n",
      "Epoch: 22910/30000, Loss: 0.00007885\n",
      "Epoch: 22920/30000, Loss: 0.00008433\n",
      "Epoch: 22930/30000, Loss: 0.00007983\n",
      "Epoch: 22940/30000, Loss: 0.00005095\n",
      "Epoch: 22950/30000, Loss: 0.00001714\n",
      "Epoch: 22960/30000, Loss: 0.00004401\n",
      "Epoch: 22970/30000, Loss: 0.00008799\n",
      "Epoch: 22980/30000, Loss: 0.00003159\n",
      "Epoch: 22990/30000, Loss: 0.00005789\n",
      "Epoch: 23000/30000, Loss: 0.00002382\n",
      "Epoch: 23010/30000, Loss: 0.00002505\n",
      "Epoch: 23020/30000, Loss: 0.00026198\n",
      "Epoch: 23030/30000, Loss: 0.00012965\n",
      "Epoch: 23040/30000, Loss: 0.00006310\n",
      "Epoch: 23050/30000, Loss: 0.00002864\n",
      "Epoch: 23060/30000, Loss: 0.00008300\n",
      "Epoch: 23070/30000, Loss: 0.00005523\n",
      "Epoch: 23080/30000, Loss: 0.00002502\n",
      "Epoch: 23090/30000, Loss: 0.00001509\n",
      "Epoch: 23100/30000, Loss: 0.00001715\n",
      "Epoch: 23110/30000, Loss: 0.00007913\n",
      "Epoch: 23120/30000, Loss: 0.00024641\n",
      "Epoch: 23130/30000, Loss: 0.00015514\n",
      "Epoch: 23140/30000, Loss: 0.00008619\n",
      "Epoch: 23150/30000, Loss: 0.00004682\n",
      "Epoch: 23160/30000, Loss: 0.00003292\n",
      "Epoch: 23170/30000, Loss: 0.00003147\n",
      "Epoch: 23180/30000, Loss: 0.00005575\n",
      "Epoch: 23190/30000, Loss: 0.00003481\n",
      "Epoch: 23200/30000, Loss: 0.00002775\n",
      "Epoch: 23210/30000, Loss: 0.00002986\n",
      "Epoch: 23220/30000, Loss: 0.00003210\n",
      "Epoch: 23230/30000, Loss: 0.00016556\n",
      "Epoch: 23240/30000, Loss: 0.00004273\n",
      "Epoch: 23250/30000, Loss: 0.00008523\n",
      "Epoch: 23260/30000, Loss: 0.00002110\n",
      "Epoch: 23270/30000, Loss: 0.00001457\n",
      "Epoch: 23280/30000, Loss: 0.00001661\n",
      "Epoch: 23290/30000, Loss: 0.00002156\n",
      "Epoch: 23300/30000, Loss: 0.00003455\n",
      "Epoch: 23310/30000, Loss: 0.00003517\n",
      "Epoch: 23320/30000, Loss: 0.00003734\n",
      "Epoch: 23330/30000, Loss: 0.00004428\n",
      "Epoch: 23340/30000, Loss: 0.00010712\n",
      "Epoch: 23350/30000, Loss: 0.00004954\n",
      "Epoch: 23360/30000, Loss: 0.00002677\n",
      "Epoch: 23370/30000, Loss: 0.00002613\n",
      "Epoch: 23380/30000, Loss: 0.00002925\n",
      "Epoch: 23390/30000, Loss: 0.00008536\n",
      "Epoch: 23400/30000, Loss: 0.00007833\n",
      "Epoch: 23410/30000, Loss: 0.00004228\n",
      "Epoch: 23420/30000, Loss: 0.00001756\n",
      "Epoch: 23430/30000, Loss: 0.00002701\n",
      "Epoch: 23440/30000, Loss: 0.00002873\n",
      "Epoch: 23450/30000, Loss: 0.00005557\n",
      "Epoch: 23460/30000, Loss: 0.00015480\n",
      "Epoch: 23470/30000, Loss: 0.00004101\n",
      "Epoch: 23480/30000, Loss: 0.00003443\n",
      "Epoch: 23490/30000, Loss: 0.00002704\n",
      "Epoch: 23500/30000, Loss: 0.00003665\n",
      "Epoch: 23510/30000, Loss: 0.00003793\n",
      "Epoch: 23520/30000, Loss: 0.00004627\n",
      "Epoch: 23530/30000, Loss: 0.00011640\n",
      "Epoch: 23540/30000, Loss: 0.00007459\n",
      "Epoch: 23550/30000, Loss: 0.00005137\n",
      "Epoch: 23560/30000, Loss: 0.00002901\n",
      "Epoch: 23570/30000, Loss: 0.00003916\n",
      "Epoch: 23580/30000, Loss: 0.00003457\n",
      "Epoch: 23590/30000, Loss: 0.00016023\n",
      "Epoch: 23600/30000, Loss: 0.00004949\n",
      "Epoch: 23610/30000, Loss: 0.00003432\n",
      "Epoch: 23620/30000, Loss: 0.00003224\n",
      "Epoch: 23630/30000, Loss: 0.00006532\n",
      "Epoch: 23640/30000, Loss: 0.00004115\n",
      "Epoch: 23650/30000, Loss: 0.00002100\n",
      "Epoch: 23660/30000, Loss: 0.00002992\n",
      "Epoch: 23670/30000, Loss: 0.00028408\n",
      "Epoch: 23680/30000, Loss: 0.00014033\n",
      "Epoch: 23690/30000, Loss: 0.00005054\n",
      "Epoch: 23700/30000, Loss: 0.00002084\n",
      "Epoch: 23710/30000, Loss: 0.00001951\n",
      "Epoch: 23720/30000, Loss: 0.00004333\n",
      "Epoch: 23730/30000, Loss: 0.00004657\n",
      "Epoch: 23740/30000, Loss: 0.00003266\n",
      "Epoch: 23750/30000, Loss: 0.00002087\n",
      "Epoch: 23760/30000, Loss: 0.00026297\n",
      "Epoch: 23770/30000, Loss: 0.00013849\n",
      "Epoch: 23780/30000, Loss: 0.00004782\n",
      "Epoch: 23790/30000, Loss: 0.00002057\n",
      "Epoch: 23800/30000, Loss: 0.00002434\n",
      "Epoch: 23810/30000, Loss: 0.00004013\n",
      "Epoch: 23820/30000, Loss: 0.00004484\n",
      "Epoch: 23830/30000, Loss: 0.00003272\n",
      "Epoch: 23840/30000, Loss: 0.00002786\n",
      "Epoch: 23850/30000, Loss: 0.00002351\n",
      "Epoch: 23860/30000, Loss: 0.00012315\n",
      "Epoch: 23870/30000, Loss: 0.00009721\n",
      "Epoch: 23880/30000, Loss: 0.00004107\n",
      "Epoch: 23890/30000, Loss: 0.00002539\n",
      "Epoch: 23900/30000, Loss: 0.00002177\n",
      "Epoch: 23910/30000, Loss: 0.00003740\n",
      "Epoch: 23920/30000, Loss: 0.00006083\n",
      "Epoch: 23930/30000, Loss: 0.00003827\n",
      "Epoch: 23940/30000, Loss: 0.00003585\n",
      "Epoch: 23950/30000, Loss: 0.00022498\n",
      "Epoch: 23960/30000, Loss: 0.00008665\n",
      "Epoch: 23970/30000, Loss: 0.00005180\n",
      "Epoch: 23980/30000, Loss: 0.00002919\n",
      "Epoch: 23990/30000, Loss: 0.00006831\n",
      "Epoch: 24000/30000, Loss: 0.00005404\n",
      "Epoch: 24010/30000, Loss: 0.00002323\n",
      "Epoch: 24020/30000, Loss: 0.00001870\n",
      "Epoch: 24030/30000, Loss: 0.00005335\n",
      "Epoch: 24040/30000, Loss: 0.00011625\n",
      "Epoch: 24050/30000, Loss: 0.00004761\n",
      "Epoch: 24060/30000, Loss: 0.00002309\n",
      "Epoch: 24070/30000, Loss: 0.00002794\n",
      "Epoch: 24080/30000, Loss: 0.00004869\n",
      "Epoch: 24090/30000, Loss: 0.00008691\n",
      "Epoch: 24100/30000, Loss: 0.00003761\n",
      "Epoch: 24110/30000, Loss: 0.00002461\n",
      "Epoch: 24120/30000, Loss: 0.00007173\n",
      "Epoch: 24130/30000, Loss: 0.00018153\n",
      "Epoch: 24140/30000, Loss: 0.00005021\n",
      "Epoch: 24150/30000, Loss: 0.00002730\n",
      "Epoch: 24160/30000, Loss: 0.00003498\n",
      "Epoch: 24170/30000, Loss: 0.00004284\n",
      "Epoch: 24180/30000, Loss: 0.00002895\n",
      "Epoch: 24190/30000, Loss: 0.00001682\n",
      "Epoch: 24200/30000, Loss: 0.00001488\n",
      "Epoch: 24210/30000, Loss: 0.00003521\n",
      "Epoch: 24220/30000, Loss: 0.00039206\n",
      "Epoch: 24230/30000, Loss: 0.00012385\n",
      "Epoch: 24240/30000, Loss: 0.00003296\n",
      "Epoch: 24250/30000, Loss: 0.00002798\n",
      "Epoch: 24260/30000, Loss: 0.00006006\n",
      "Epoch: 24270/30000, Loss: 0.00002917\n",
      "Epoch: 24280/30000, Loss: 0.00001808\n",
      "Epoch: 24290/30000, Loss: 0.00001508\n",
      "Epoch: 24300/30000, Loss: 0.00001557\n",
      "Epoch: 24310/30000, Loss: 0.00002486\n",
      "Epoch: 24320/30000, Loss: 0.00013191\n",
      "Epoch: 24330/30000, Loss: 0.00005943\n",
      "Epoch: 24340/30000, Loss: 0.00003991\n",
      "Epoch: 24350/30000, Loss: 0.00002724\n",
      "Epoch: 24360/30000, Loss: 0.00002407\n",
      "Epoch: 24370/30000, Loss: 0.00006724\n",
      "Epoch: 24380/30000, Loss: 0.00010716\n",
      "Epoch: 24390/30000, Loss: 0.00005320\n",
      "Epoch: 24400/30000, Loss: 0.00002560\n",
      "Epoch: 24410/30000, Loss: 0.00003109\n",
      "Epoch: 24420/30000, Loss: 0.00015577\n",
      "Epoch: 24430/30000, Loss: 0.00004170\n",
      "Epoch: 24440/30000, Loss: 0.00002524\n",
      "Epoch: 24450/30000, Loss: 0.00002423\n",
      "Epoch: 24460/30000, Loss: 0.00002358\n",
      "Epoch: 24470/30000, Loss: 0.00005031\n",
      "Epoch: 24480/30000, Loss: 0.00005188\n",
      "Epoch: 24490/30000, Loss: 0.00014530\n",
      "Epoch: 24500/30000, Loss: 0.00001779\n",
      "Epoch: 24510/30000, Loss: 0.00002708\n",
      "Epoch: 24520/30000, Loss: 0.00002177\n",
      "Epoch: 24530/30000, Loss: 0.00002605\n",
      "Epoch: 24540/30000, Loss: 0.00004861\n",
      "Epoch: 24550/30000, Loss: 0.00007118\n",
      "Epoch: 24560/30000, Loss: 0.00010075\n",
      "Epoch: 24570/30000, Loss: 0.00008895\n",
      "Epoch: 24580/30000, Loss: 0.00004680\n",
      "Epoch: 24590/30000, Loss: 0.00002623\n",
      "Epoch: 24600/30000, Loss: 0.00001795\n",
      "Epoch: 24610/30000, Loss: 0.00002046\n",
      "Epoch: 24620/30000, Loss: 0.00005957\n",
      "Epoch: 24630/30000, Loss: 0.00023174\n",
      "Epoch: 24640/30000, Loss: 0.00003329\n",
      "Epoch: 24650/30000, Loss: 0.00003828\n",
      "Epoch: 24660/30000, Loss: 0.00003972\n",
      "Epoch: 24670/30000, Loss: 0.00007117\n",
      "Epoch: 24680/30000, Loss: 0.00005314\n",
      "Epoch: 24690/30000, Loss: 0.00002068\n",
      "Epoch: 24700/30000, Loss: 0.00001819\n",
      "Epoch: 24710/30000, Loss: 0.00002959\n",
      "Epoch: 24720/30000, Loss: 0.00005069\n",
      "Epoch: 24730/30000, Loss: 0.00005906\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 24740/30000, Loss: 0.00006479\n",
      "Epoch: 24750/30000, Loss: 0.00006984\n",
      "Epoch: 24760/30000, Loss: 0.00005292\n",
      "Epoch: 24770/30000, Loss: 0.00003036\n",
      "Epoch: 24780/30000, Loss: 0.00004232\n",
      "Epoch: 24790/30000, Loss: 0.00012580\n",
      "Epoch: 24800/30000, Loss: 0.00002929\n",
      "Epoch: 24810/30000, Loss: 0.00003956\n",
      "Epoch: 24820/30000, Loss: 0.00002258\n",
      "Epoch: 24830/30000, Loss: 0.00002976\n",
      "Epoch: 24840/30000, Loss: 0.00003517\n",
      "Epoch: 24850/30000, Loss: 0.00009686\n",
      "Epoch: 24860/30000, Loss: 0.00012151\n",
      "Epoch: 24870/30000, Loss: 0.00005664\n",
      "Epoch: 24880/30000, Loss: 0.00003012\n",
      "Epoch: 24890/30000, Loss: 0.00002385\n",
      "Epoch: 24900/30000, Loss: 0.00001834\n",
      "Epoch: 24910/30000, Loss: 0.00004606\n",
      "Epoch: 24920/30000, Loss: 0.00006800\n",
      "Epoch: 24930/30000, Loss: 0.00009698\n",
      "Epoch: 24940/30000, Loss: 0.00006389\n",
      "Epoch: 24950/30000, Loss: 0.00003742\n",
      "Epoch: 24960/30000, Loss: 0.00002362\n",
      "Epoch: 24970/30000, Loss: 0.00002046\n",
      "Epoch: 24980/30000, Loss: 0.00005787\n",
      "Epoch: 24990/30000, Loss: 0.00018640\n",
      "Epoch: 25000/30000, Loss: 0.00007547\n",
      "Epoch: 25010/30000, Loss: 0.00003575\n",
      "Epoch: 25020/30000, Loss: 0.00001747\n",
      "Epoch: 25030/30000, Loss: 0.00003496\n",
      "Epoch: 25040/30000, Loss: 0.00008477\n",
      "Epoch: 25050/30000, Loss: 0.00006118\n",
      "Epoch: 25060/30000, Loss: 0.00003389\n",
      "Epoch: 25070/30000, Loss: 0.00002559\n",
      "Epoch: 25080/30000, Loss: 0.00004402\n",
      "Epoch: 25090/30000, Loss: 0.00031826\n",
      "Epoch: 25100/30000, Loss: 0.00010282\n",
      "Epoch: 25110/30000, Loss: 0.00003064\n",
      "Epoch: 25120/30000, Loss: 0.00001565\n",
      "Epoch: 25130/30000, Loss: 0.00001630\n",
      "Epoch: 25140/30000, Loss: 0.00002414\n",
      "Epoch: 25150/30000, Loss: 0.00002246\n",
      "Epoch: 25160/30000, Loss: 0.00004328\n",
      "Epoch: 25170/30000, Loss: 0.00010413\n",
      "Epoch: 25180/30000, Loss: 0.00016581\n",
      "Epoch: 25190/30000, Loss: 0.00002826\n",
      "Epoch: 25200/30000, Loss: 0.00003343\n",
      "Epoch: 25210/30000, Loss: 0.00001918\n",
      "Epoch: 25220/30000, Loss: 0.00003501\n",
      "Epoch: 25230/30000, Loss: 0.00003109\n",
      "Epoch: 25240/30000, Loss: 0.00004515\n",
      "Epoch: 25250/30000, Loss: 0.00012400\n",
      "Epoch: 25260/30000, Loss: 0.00003500\n",
      "Epoch: 25270/30000, Loss: 0.00004818\n",
      "Epoch: 25280/30000, Loss: 0.00002851\n",
      "Epoch: 25290/30000, Loss: 0.00003347\n",
      "Epoch: 25300/30000, Loss: 0.00009431\n",
      "Epoch: 25310/30000, Loss: 0.00005323\n",
      "Epoch: 25320/30000, Loss: 0.00003926\n",
      "Epoch: 25330/30000, Loss: 0.00003488\n",
      "Epoch: 25340/30000, Loss: 0.00004535\n",
      "Epoch: 25350/30000, Loss: 0.00010963\n",
      "Epoch: 25360/30000, Loss: 0.00010919\n",
      "Epoch: 25370/30000, Loss: 0.00005723\n",
      "Epoch: 25380/30000, Loss: 0.00003795\n",
      "Epoch: 25390/30000, Loss: 0.00002946\n",
      "Epoch: 25400/30000, Loss: 0.00003752\n",
      "Epoch: 25410/30000, Loss: 0.00003675\n",
      "Epoch: 25420/30000, Loss: 0.00004145\n",
      "Epoch: 25430/30000, Loss: 0.00009555\n",
      "Epoch: 25440/30000, Loss: 0.00006018\n",
      "Epoch: 25450/30000, Loss: 0.00004427\n",
      "Epoch: 25460/30000, Loss: 0.00003409\n",
      "Epoch: 25470/30000, Loss: 0.00003228\n",
      "Epoch: 25480/30000, Loss: 0.00013570\n",
      "Epoch: 25490/30000, Loss: 0.00005088\n",
      "Epoch: 25500/30000, Loss: 0.00003091\n",
      "Epoch: 25510/30000, Loss: 0.00003000\n",
      "Epoch: 25520/30000, Loss: 0.00002720\n",
      "Epoch: 25530/30000, Loss: 0.00003077\n",
      "Epoch: 25540/30000, Loss: 0.00003230\n",
      "Epoch: 25550/30000, Loss: 0.00003157\n",
      "Epoch: 25560/30000, Loss: 0.00004195\n",
      "Epoch: 25570/30000, Loss: 0.00052710\n",
      "Epoch: 25580/30000, Loss: 0.00013753\n",
      "Epoch: 25590/30000, Loss: 0.00006719\n",
      "Epoch: 25600/30000, Loss: 0.00002307\n",
      "Epoch: 25610/30000, Loss: 0.00002460\n",
      "Epoch: 25620/30000, Loss: 0.00002692\n",
      "Epoch: 25630/30000, Loss: 0.00002355\n",
      "Epoch: 25640/30000, Loss: 0.00002790\n",
      "Epoch: 25650/30000, Loss: 0.00003563\n",
      "Epoch: 25660/30000, Loss: 0.00020877\n",
      "Epoch: 25670/30000, Loss: 0.00009370\n",
      "Epoch: 25680/30000, Loss: 0.00005939\n",
      "Epoch: 25690/30000, Loss: 0.00004615\n",
      "Epoch: 25700/30000, Loss: 0.00002793\n",
      "Epoch: 25710/30000, Loss: 0.00002144\n",
      "Epoch: 25720/30000, Loss: 0.00002267\n",
      "Epoch: 25730/30000, Loss: 0.00003634\n",
      "Epoch: 25740/30000, Loss: 0.00003483\n",
      "Epoch: 25750/30000, Loss: 0.00008686\n",
      "Epoch: 25760/30000, Loss: 0.00017171\n",
      "Epoch: 25770/30000, Loss: 0.00003796\n",
      "Epoch: 25780/30000, Loss: 0.00003535\n",
      "Epoch: 25790/30000, Loss: 0.00001978\n",
      "Epoch: 25800/30000, Loss: 0.00003263\n",
      "Epoch: 25810/30000, Loss: 0.00009690\n",
      "Epoch: 25820/30000, Loss: 0.00005893\n",
      "Epoch: 25830/30000, Loss: 0.00004972\n",
      "Epoch: 25840/30000, Loss: 0.00002948\n",
      "Epoch: 25850/30000, Loss: 0.00003390\n",
      "Epoch: 25860/30000, Loss: 0.00005095\n",
      "Epoch: 25870/30000, Loss: 0.00022374\n",
      "Epoch: 25880/30000, Loss: 0.00006821\n",
      "Epoch: 25890/30000, Loss: 0.00004438\n",
      "Epoch: 25900/30000, Loss: 0.00002491\n",
      "Epoch: 25910/30000, Loss: 0.00001984\n",
      "Epoch: 25920/30000, Loss: 0.00002101\n",
      "Epoch: 25930/30000, Loss: 0.00002348\n",
      "Epoch: 25940/30000, Loss: 0.00002788\n",
      "Epoch: 25950/30000, Loss: 0.00007615\n",
      "Epoch: 25960/30000, Loss: 0.00027411\n",
      "Epoch: 25970/30000, Loss: 0.00009368\n",
      "Epoch: 25980/30000, Loss: 0.00003646\n",
      "Epoch: 25990/30000, Loss: 0.00001826\n",
      "Epoch: 26000/30000, Loss: 0.00002000\n",
      "Epoch: 26010/30000, Loss: 0.00002518\n",
      "Epoch: 26020/30000, Loss: 0.00002556\n",
      "Epoch: 26030/30000, Loss: 0.00002790\n",
      "Epoch: 26040/30000, Loss: 0.00004105\n",
      "Epoch: 26050/30000, Loss: 0.00024146\n",
      "Epoch: 26060/30000, Loss: 0.00010611\n",
      "Epoch: 26070/30000, Loss: 0.00006645\n",
      "Epoch: 26080/30000, Loss: 0.00003536\n",
      "Epoch: 26090/30000, Loss: 0.00002157\n",
      "Epoch: 26100/30000, Loss: 0.00002395\n",
      "Epoch: 26110/30000, Loss: 0.00002221\n",
      "Epoch: 26120/30000, Loss: 0.00002705\n",
      "Epoch: 26130/30000, Loss: 0.00003420\n",
      "Epoch: 26140/30000, Loss: 0.00006726\n",
      "Epoch: 26150/30000, Loss: 0.00022780\n",
      "Epoch: 26160/30000, Loss: 0.00010518\n",
      "Epoch: 26170/30000, Loss: 0.00005296\n",
      "Epoch: 26180/30000, Loss: 0.00002399\n",
      "Epoch: 26190/30000, Loss: 0.00001644\n",
      "Epoch: 26200/30000, Loss: 0.00002700\n",
      "Epoch: 26210/30000, Loss: 0.00002733\n",
      "Epoch: 26220/30000, Loss: 0.00005734\n",
      "Epoch: 26230/30000, Loss: 0.00017540\n",
      "Epoch: 26240/30000, Loss: 0.00003946\n",
      "Epoch: 26250/30000, Loss: 0.00002578\n",
      "Epoch: 26260/30000, Loss: 0.00002622\n",
      "Epoch: 26270/30000, Loss: 0.00001976\n",
      "Epoch: 26280/30000, Loss: 0.00003274\n",
      "Epoch: 26290/30000, Loss: 0.00005607\n",
      "Epoch: 26300/30000, Loss: 0.00023181\n",
      "Epoch: 26310/30000, Loss: 0.00007891\n",
      "Epoch: 26320/30000, Loss: 0.00003425\n",
      "Epoch: 26330/30000, Loss: 0.00002105\n",
      "Epoch: 26340/30000, Loss: 0.00001999\n",
      "Epoch: 26350/30000, Loss: 0.00002263\n",
      "Epoch: 26360/30000, Loss: 0.00004095\n",
      "Epoch: 26370/30000, Loss: 0.00006526\n",
      "Epoch: 26380/30000, Loss: 0.00009186\n",
      "Epoch: 26390/30000, Loss: 0.00004323\n",
      "Epoch: 26400/30000, Loss: 0.00002665\n",
      "Epoch: 26410/30000, Loss: 0.00004204\n",
      "Epoch: 26420/30000, Loss: 0.00015715\n",
      "Epoch: 26430/30000, Loss: 0.00003606\n",
      "Epoch: 26440/30000, Loss: 0.00003244\n",
      "Epoch: 26450/30000, Loss: 0.00002436\n",
      "Epoch: 26460/30000, Loss: 0.00002644\n",
      "Epoch: 26470/30000, Loss: 0.00003070\n",
      "Epoch: 26480/30000, Loss: 0.00007260\n",
      "Epoch: 26490/30000, Loss: 0.00017007\n",
      "Epoch: 26500/30000, Loss: 0.00008089\n",
      "Epoch: 26510/30000, Loss: 0.00003893\n",
      "Epoch: 26520/30000, Loss: 0.00001929\n",
      "Epoch: 26530/30000, Loss: 0.00002663\n",
      "Epoch: 26540/30000, Loss: 0.00003268\n",
      "Epoch: 26550/30000, Loss: 0.00003419\n",
      "Epoch: 26560/30000, Loss: 0.00003940\n",
      "Epoch: 26570/30000, Loss: 0.00017646\n",
      "Epoch: 26580/30000, Loss: 0.00007258\n",
      "Epoch: 26590/30000, Loss: 0.00009481\n",
      "Epoch: 26600/30000, Loss: 0.00003462\n",
      "Epoch: 26610/30000, Loss: 0.00001962\n",
      "Epoch: 26620/30000, Loss: 0.00001667\n",
      "Epoch: 26630/30000, Loss: 0.00002390\n",
      "Epoch: 26640/30000, Loss: 0.00003738\n",
      "Epoch: 26650/30000, Loss: 0.00003434\n",
      "Epoch: 26660/30000, Loss: 0.00003853\n",
      "Epoch: 26670/30000, Loss: 0.00002607\n",
      "Epoch: 26680/30000, Loss: 0.00003734\n",
      "Epoch: 26690/30000, Loss: 0.00003117\n",
      "Epoch: 26700/30000, Loss: 0.00003865\n",
      "Epoch: 26710/30000, Loss: 0.00034970\n",
      "Epoch: 26720/30000, Loss: 0.00035485\n",
      "Epoch: 26730/30000, Loss: 0.00010023\n",
      "Epoch: 26740/30000, Loss: 0.00003520\n",
      "Epoch: 26750/30000, Loss: 0.00001725\n",
      "Epoch: 26760/30000, Loss: 0.00001470\n",
      "Epoch: 26770/30000, Loss: 0.00002251\n",
      "Epoch: 26780/30000, Loss: 0.00002285\n",
      "Epoch: 26790/30000, Loss: 0.00002965\n",
      "Epoch: 26800/30000, Loss: 0.00003535\n",
      "Epoch: 26810/30000, Loss: 0.00004324\n",
      "Epoch: 26820/30000, Loss: 0.00004913\n",
      "Epoch: 26830/30000, Loss: 0.00004962\n",
      "Epoch: 26840/30000, Loss: 0.00004591\n",
      "Epoch: 26850/30000, Loss: 0.00003481\n",
      "Epoch: 26860/30000, Loss: 0.00002582\n",
      "Epoch: 26870/30000, Loss: 0.00002208\n",
      "Epoch: 26880/30000, Loss: 0.00001944\n",
      "Epoch: 26890/30000, Loss: 0.00003332\n",
      "Epoch: 26900/30000, Loss: 0.00003219\n",
      "Epoch: 26910/30000, Loss: 0.00011040\n",
      "Epoch: 26920/30000, Loss: 0.00005420\n",
      "Epoch: 26930/30000, Loss: 0.00008308\n",
      "Epoch: 26940/30000, Loss: 0.00003514\n",
      "Epoch: 26950/30000, Loss: 0.00001798\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 26960/30000, Loss: 0.00002030\n",
      "Epoch: 26970/30000, Loss: 0.00002231\n",
      "Epoch: 26980/30000, Loss: 0.00002684\n",
      "Epoch: 26990/30000, Loss: 0.00002902\n",
      "Epoch: 27000/30000, Loss: 0.00003092\n",
      "Epoch: 27010/30000, Loss: 0.00003153\n",
      "Epoch: 27020/30000, Loss: 0.00005058\n",
      "Epoch: 27030/30000, Loss: 0.00003577\n",
      "Epoch: 27040/30000, Loss: 0.00003433\n",
      "Epoch: 27050/30000, Loss: 0.00010886\n",
      "Epoch: 27060/30000, Loss: 0.00007699\n",
      "Epoch: 27070/30000, Loss: 0.00002893\n",
      "Epoch: 27080/30000, Loss: 0.00002038\n",
      "Epoch: 27090/30000, Loss: 0.00001506\n",
      "Epoch: 27100/30000, Loss: 0.00001524\n",
      "Epoch: 27110/30000, Loss: 0.00002091\n",
      "Epoch: 27120/30000, Loss: 0.00002452\n",
      "Epoch: 27130/30000, Loss: 0.00002670\n",
      "Epoch: 27140/30000, Loss: 0.00003933\n",
      "Epoch: 27150/30000, Loss: 0.00020832\n",
      "Epoch: 27160/30000, Loss: 0.00005909\n",
      "Epoch: 27170/30000, Loss: 0.00002726\n",
      "Epoch: 27180/30000, Loss: 0.00002722\n",
      "Epoch: 27190/30000, Loss: 0.00002884\n",
      "Epoch: 27200/30000, Loss: 0.00003321\n",
      "Epoch: 27210/30000, Loss: 0.00002793\n",
      "Epoch: 27220/30000, Loss: 0.00003289\n",
      "Epoch: 27230/30000, Loss: 0.00003402\n",
      "Epoch: 27240/30000, Loss: 0.00110733\n",
      "Epoch: 27250/30000, Loss: 0.00043773\n",
      "Epoch: 27260/30000, Loss: 0.00019369\n",
      "Epoch: 27270/30000, Loss: 0.00028023\n",
      "Epoch: 27280/30000, Loss: 0.00050304\n",
      "Epoch: 27290/30000, Loss: 0.00020566\n",
      "Epoch: 27300/30000, Loss: 0.00012644\n",
      "Epoch: 27310/30000, Loss: 0.00038629\n",
      "Epoch: 27320/30000, Loss: 0.00021037\n",
      "Epoch: 27330/30000, Loss: 0.00011559\n",
      "Epoch: 27340/30000, Loss: 0.00009284\n",
      "Epoch: 27350/30000, Loss: 0.00008192\n",
      "Epoch: 27360/30000, Loss: 0.00007573\n",
      "Epoch: 27370/30000, Loss: 0.00007507\n",
      "Epoch: 27380/30000, Loss: 0.00007331\n",
      "Epoch: 27390/30000, Loss: 0.00007196\n",
      "Epoch: 27400/30000, Loss: 0.00007109\n",
      "Epoch: 27410/30000, Loss: 0.00007224\n",
      "Epoch: 27420/30000, Loss: 0.00007108\n",
      "Epoch: 27430/30000, Loss: 0.00007093\n",
      "Epoch: 27440/30000, Loss: 0.00064967\n",
      "Epoch: 27450/30000, Loss: 0.00008509\n",
      "Epoch: 27460/30000, Loss: 0.00007676\n",
      "Epoch: 27470/30000, Loss: 0.00007528\n",
      "Epoch: 27480/30000, Loss: 0.00007441\n",
      "Epoch: 27490/30000, Loss: 0.00007294\n",
      "Epoch: 27500/30000, Loss: 0.00007145\n",
      "Epoch: 27510/30000, Loss: 0.00007450\n",
      "Epoch: 27520/30000, Loss: 0.00008095\n",
      "Epoch: 27530/30000, Loss: 0.00008017\n",
      "Epoch: 27540/30000, Loss: 0.00008388\n",
      "Epoch: 27550/30000, Loss: 0.00007976\n",
      "Epoch: 27560/30000, Loss: 0.00013351\n",
      "Epoch: 27570/30000, Loss: 0.00012346\n",
      "Epoch: 27580/30000, Loss: 0.00010552\n",
      "Epoch: 27590/30000, Loss: 0.00008652\n",
      "Epoch: 27600/30000, Loss: 0.00007514\n",
      "Epoch: 27610/30000, Loss: 0.00007152\n",
      "Epoch: 27620/30000, Loss: 0.00007704\n",
      "Epoch: 27630/30000, Loss: 0.00008411\n",
      "Epoch: 27640/30000, Loss: 0.00008684\n",
      "Epoch: 27650/30000, Loss: 0.00025723\n",
      "Epoch: 27660/30000, Loss: 0.00009925\n",
      "Epoch: 27670/30000, Loss: 0.00010256\n",
      "Epoch: 27680/30000, Loss: 0.00008231\n",
      "Epoch: 27690/30000, Loss: 0.00007430\n",
      "Epoch: 27700/30000, Loss: 0.00006968\n",
      "Epoch: 27710/30000, Loss: 0.00007374\n",
      "Epoch: 27720/30000, Loss: 0.00007757\n",
      "Epoch: 27730/30000, Loss: 0.00007530\n",
      "Epoch: 27740/30000, Loss: 0.00008478\n",
      "Epoch: 27750/30000, Loss: 0.00008849\n",
      "Epoch: 27760/30000, Loss: 0.00010436\n",
      "Epoch: 27770/30000, Loss: 0.00082777\n",
      "Epoch: 27780/30000, Loss: 0.00028794\n",
      "Epoch: 27790/30000, Loss: 0.00014248\n",
      "Epoch: 27800/30000, Loss: 0.00009495\n",
      "Epoch: 27810/30000, Loss: 0.00007695\n",
      "Epoch: 27820/30000, Loss: 0.00007372\n",
      "Epoch: 27830/30000, Loss: 0.00007201\n",
      "Epoch: 27840/30000, Loss: 0.00007803\n",
      "Epoch: 27850/30000, Loss: 0.00008657\n",
      "Epoch: 27860/30000, Loss: 0.00008978\n",
      "Epoch: 27870/30000, Loss: 0.00008450\n",
      "Epoch: 27880/30000, Loss: 0.00008529\n",
      "Epoch: 27890/30000, Loss: 0.00007933\n",
      "Epoch: 27900/30000, Loss: 0.00007989\n",
      "Epoch: 27910/30000, Loss: 0.00009547\n",
      "Epoch: 27920/30000, Loss: 0.00008031\n",
      "Epoch: 27930/30000, Loss: 0.00007937\n",
      "Epoch: 27940/30000, Loss: 0.00009046\n",
      "Epoch: 27950/30000, Loss: 0.00010598\n",
      "Epoch: 27960/30000, Loss: 0.00008797\n",
      "Epoch: 27970/30000, Loss: 0.00007294\n",
      "Epoch: 27980/30000, Loss: 0.00007727\n",
      "Epoch: 27990/30000, Loss: 0.00008825\n",
      "Epoch: 28000/30000, Loss: 0.00076165\n",
      "Epoch: 28010/30000, Loss: 0.00014299\n",
      "Epoch: 28020/30000, Loss: 0.00009001\n",
      "Epoch: 28030/30000, Loss: 0.00008182\n",
      "Epoch: 28040/30000, Loss: 0.00007898\n",
      "Epoch: 28050/30000, Loss: 0.00007840\n",
      "Epoch: 28060/30000, Loss: 0.00009245\n",
      "Epoch: 28070/30000, Loss: 0.00009254\n",
      "Epoch: 28080/30000, Loss: 0.00009195\n",
      "Epoch: 28090/30000, Loss: 0.00008488\n",
      "Epoch: 28100/30000, Loss: 0.00008133\n",
      "Epoch: 28110/30000, Loss: 0.00007969\n",
      "Epoch: 28120/30000, Loss: 0.00009283\n",
      "Epoch: 28130/30000, Loss: 0.00013049\n",
      "Epoch: 28140/30000, Loss: 0.00008872\n",
      "Epoch: 28150/30000, Loss: 0.00007592\n",
      "Epoch: 28160/30000, Loss: 0.00007961\n",
      "Epoch: 28170/30000, Loss: 0.00007978\n",
      "Epoch: 28180/30000, Loss: 0.00008119\n",
      "Epoch: 28190/30000, Loss: 0.00009726\n",
      "Epoch: 28200/30000, Loss: 0.00013352\n",
      "Epoch: 28210/30000, Loss: 0.00021076\n",
      "Epoch: 28220/30000, Loss: 0.00010781\n",
      "Epoch: 28230/30000, Loss: 0.00008094\n",
      "Epoch: 28240/30000, Loss: 0.00007500\n",
      "Epoch: 28250/30000, Loss: 0.00007239\n",
      "Epoch: 28260/30000, Loss: 0.00007812\n",
      "Epoch: 28270/30000, Loss: 0.00009261\n",
      "Epoch: 28280/30000, Loss: 0.00012451\n",
      "Epoch: 28290/30000, Loss: 0.00008741\n",
      "Epoch: 28300/30000, Loss: 0.00008276\n",
      "Epoch: 28310/30000, Loss: 0.00008404\n",
      "Epoch: 28320/30000, Loss: 0.00016787\n",
      "Epoch: 28330/30000, Loss: 0.00013577\n",
      "Epoch: 28340/30000, Loss: 0.00011560\n",
      "Epoch: 28350/30000, Loss: 0.00008775\n",
      "Epoch: 28360/30000, Loss: 0.00009483\n",
      "Epoch: 28370/30000, Loss: 0.00007955\n",
      "Epoch: 28380/30000, Loss: 0.00008379\n",
      "Epoch: 28390/30000, Loss: 0.00008634\n",
      "Epoch: 28400/30000, Loss: 0.00012036\n",
      "Epoch: 28410/30000, Loss: 0.00042332\n",
      "Epoch: 28420/30000, Loss: 0.00014156\n",
      "Epoch: 28430/30000, Loss: 0.00007937\n",
      "Epoch: 28440/30000, Loss: 0.00007727\n",
      "Epoch: 28450/30000, Loss: 0.00007782\n",
      "Epoch: 28460/30000, Loss: 0.00008257\n",
      "Epoch: 28470/30000, Loss: 0.00008724\n",
      "Epoch: 28480/30000, Loss: 0.00013120\n",
      "Epoch: 28490/30000, Loss: 0.00009251\n",
      "Epoch: 28500/30000, Loss: 0.00009046\n",
      "Epoch: 28510/30000, Loss: 0.00008256\n",
      "Epoch: 28520/30000, Loss: 0.00008253\n",
      "Epoch: 28530/30000, Loss: 0.00016666\n",
      "Epoch: 28540/30000, Loss: 0.00017487\n",
      "Epoch: 28550/30000, Loss: 0.00008928\n",
      "Epoch: 28560/30000, Loss: 0.00007857\n",
      "Epoch: 28570/30000, Loss: 0.00007464\n",
      "Epoch: 28580/30000, Loss: 0.00007083\n",
      "Epoch: 28590/30000, Loss: 0.00007756\n",
      "Epoch: 28600/30000, Loss: 0.00009174\n",
      "Epoch: 28610/30000, Loss: 0.00014910\n",
      "Epoch: 28620/30000, Loss: 0.00012130\n",
      "Epoch: 28630/30000, Loss: 0.00009459\n",
      "Epoch: 28640/30000, Loss: 0.00007990\n",
      "Epoch: 28650/30000, Loss: 0.00007374\n",
      "Epoch: 28660/30000, Loss: 0.00011072\n",
      "Epoch: 28670/30000, Loss: 0.00029763\n",
      "Epoch: 28680/30000, Loss: 0.00013802\n",
      "Epoch: 28690/30000, Loss: 0.00009826\n",
      "Epoch: 28700/30000, Loss: 0.00008759\n",
      "Epoch: 28710/30000, Loss: 0.00007327\n",
      "Epoch: 28720/30000, Loss: 0.00007074\n",
      "Epoch: 28730/30000, Loss: 0.00007570\n",
      "Epoch: 28740/30000, Loss: 0.00024656\n",
      "Epoch: 28750/30000, Loss: 0.00012071\n",
      "Epoch: 28760/30000, Loss: 0.00008817\n",
      "Epoch: 28770/30000, Loss: 0.00008133\n",
      "Epoch: 28780/30000, Loss: 0.00007973\n",
      "Epoch: 28790/30000, Loss: 0.00007973\n",
      "Epoch: 28800/30000, Loss: 0.00009357\n",
      "Epoch: 28810/30000, Loss: 0.00036781\n",
      "Epoch: 28820/30000, Loss: 0.00017347\n",
      "Epoch: 28830/30000, Loss: 0.00010739\n",
      "Epoch: 28840/30000, Loss: 0.00008383\n",
      "Epoch: 28850/30000, Loss: 0.00007705\n",
      "Epoch: 28860/30000, Loss: 0.00007728\n",
      "Epoch: 28870/30000, Loss: 0.00007761\n",
      "Epoch: 28880/30000, Loss: 0.00008385\n",
      "Epoch: 28890/30000, Loss: 0.00009558\n",
      "Epoch: 28900/30000, Loss: 0.00022962\n",
      "Epoch: 28910/30000, Loss: 0.00010911\n",
      "Epoch: 28920/30000, Loss: 0.00012007\n",
      "Epoch: 28930/30000, Loss: 0.00009843\n",
      "Epoch: 28940/30000, Loss: 0.00008093\n",
      "Epoch: 28950/30000, Loss: 0.00007618\n",
      "Epoch: 28960/30000, Loss: 0.00007840\n",
      "Epoch: 28970/30000, Loss: 0.00009497\n",
      "Epoch: 28980/30000, Loss: 0.00015529\n",
      "Epoch: 28990/30000, Loss: 0.00010466\n",
      "Epoch: 29000/30000, Loss: 0.00009378\n",
      "Epoch: 29010/30000, Loss: 0.00007691\n",
      "Epoch: 29020/30000, Loss: 0.00008054\n",
      "Epoch: 29030/30000, Loss: 0.00019794\n",
      "Epoch: 29040/30000, Loss: 0.00010641\n",
      "Epoch: 29050/30000, Loss: 0.00008290\n",
      "Epoch: 29060/30000, Loss: 0.00007594\n",
      "Epoch: 29070/30000, Loss: 0.00007327\n",
      "Epoch: 29080/30000, Loss: 0.00007540\n",
      "Epoch: 29090/30000, Loss: 0.00007376\n",
      "Epoch: 29100/30000, Loss: 0.00009627\n",
      "Epoch: 29110/30000, Loss: 0.00023389\n",
      "Epoch: 29120/30000, Loss: 0.00011436\n",
      "Epoch: 29130/30000, Loss: 0.00010300\n",
      "Epoch: 29140/30000, Loss: 0.00008686\n",
      "Epoch: 29150/30000, Loss: 0.00008891\n",
      "Epoch: 29160/30000, Loss: 0.00008337\n",
      "Epoch: 29170/30000, Loss: 0.00010274\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 29180/30000, Loss: 0.00018923\n",
      "Epoch: 29190/30000, Loss: 0.00009053\n",
      "Epoch: 29200/30000, Loss: 0.00009307\n",
      "Epoch: 29210/30000, Loss: 0.00008160\n",
      "Epoch: 29220/30000, Loss: 0.00007349\n",
      "Epoch: 29230/30000, Loss: 0.00007938\n",
      "Epoch: 29240/30000, Loss: 0.00014905\n",
      "Epoch: 29250/30000, Loss: 0.00013820\n",
      "Epoch: 29260/30000, Loss: 0.00009863\n",
      "Epoch: 29270/30000, Loss: 0.00008170\n",
      "Epoch: 29280/30000, Loss: 0.00007738\n",
      "Epoch: 29290/30000, Loss: 0.00007869\n",
      "Epoch: 29300/30000, Loss: 0.00038595\n",
      "Epoch: 29310/30000, Loss: 0.00022413\n",
      "Epoch: 29320/30000, Loss: 0.00010568\n",
      "Epoch: 29330/30000, Loss: 0.00007728\n",
      "Epoch: 29340/30000, Loss: 0.00007944\n",
      "Epoch: 29350/30000, Loss: 0.00009155\n",
      "Epoch: 29360/30000, Loss: 0.00008465\n",
      "Epoch: 29370/30000, Loss: 0.00009095\n",
      "Epoch: 29380/30000, Loss: 0.00009450\n",
      "Epoch: 29390/30000, Loss: 0.00009139\n",
      "Epoch: 29400/30000, Loss: 0.00010574\n",
      "Epoch: 29410/30000, Loss: 0.00021514\n",
      "Epoch: 29420/30000, Loss: 0.00009783\n",
      "Epoch: 29430/30000, Loss: 0.00007526\n",
      "Epoch: 29440/30000, Loss: 0.00008368\n",
      "Epoch: 29450/30000, Loss: 0.00007121\n",
      "Epoch: 29460/30000, Loss: 0.00007434\n",
      "Epoch: 29470/30000, Loss: 0.00010246\n",
      "Epoch: 29480/30000, Loss: 0.00043761\n",
      "Epoch: 29490/30000, Loss: 0.00015098\n",
      "Epoch: 29500/30000, Loss: 0.00008072\n",
      "Epoch: 29510/30000, Loss: 0.00008222\n",
      "Epoch: 29520/30000, Loss: 0.00007565\n",
      "Epoch: 29530/30000, Loss: 0.00007400\n",
      "Epoch: 29540/30000, Loss: 0.00009205\n",
      "Epoch: 29550/30000, Loss: 0.00008862\n",
      "Epoch: 29560/30000, Loss: 0.00009446\n",
      "Epoch: 29570/30000, Loss: 0.00009088\n",
      "Epoch: 29580/30000, Loss: 0.00008837\n",
      "Epoch: 29590/30000, Loss: 0.00025185\n",
      "Epoch: 29600/30000, Loss: 0.00010057\n",
      "Epoch: 29610/30000, Loss: 0.00009016\n",
      "Epoch: 29620/30000, Loss: 0.00008227\n",
      "Epoch: 29630/30000, Loss: 0.00007614\n",
      "Epoch: 29640/30000, Loss: 0.00007006\n",
      "Epoch: 29650/30000, Loss: 0.00009431\n",
      "Epoch: 29660/30000, Loss: 0.00012517\n",
      "Epoch: 29670/30000, Loss: 0.00010066\n",
      "Epoch: 29680/30000, Loss: 0.00009196\n",
      "Epoch: 29690/30000, Loss: 0.00008341\n",
      "Epoch: 29700/30000, Loss: 0.00025912\n",
      "Epoch: 29710/30000, Loss: 0.00010554\n",
      "Epoch: 29720/30000, Loss: 0.00011385\n",
      "Epoch: 29730/30000, Loss: 0.00010207\n",
      "Epoch: 29740/30000, Loss: 0.00007940\n",
      "Epoch: 29750/30000, Loss: 0.00007749\n",
      "Epoch: 29760/30000, Loss: 0.00008347\n",
      "Epoch: 29770/30000, Loss: 0.00008256\n",
      "Epoch: 29780/30000, Loss: 0.00011059\n",
      "Epoch: 29790/30000, Loss: 0.00010225\n",
      "Epoch: 29800/30000, Loss: 0.00009044\n",
      "Epoch: 29810/30000, Loss: 0.00010160\n",
      "Epoch: 29820/30000, Loss: 0.00014498\n",
      "Epoch: 29830/30000, Loss: 0.00017443\n",
      "Epoch: 29840/30000, Loss: 0.00012230\n",
      "Epoch: 29850/30000, Loss: 0.00008198\n",
      "Epoch: 29860/30000, Loss: 0.00008577\n",
      "Epoch: 29870/30000, Loss: 0.00007368\n",
      "Epoch: 29880/30000, Loss: 0.00007556\n",
      "Epoch: 29890/30000, Loss: 0.00007942\n",
      "Epoch: 29900/30000, Loss: 0.00011809\n",
      "Epoch: 29910/30000, Loss: 0.00093449\n",
      "Epoch: 29920/30000, Loss: 0.00022728\n",
      "Epoch: 29930/30000, Loss: 0.00011481\n",
      "Epoch: 29940/30000, Loss: 0.00009539\n",
      "Epoch: 29950/30000, Loss: 0.00008021\n",
      "Epoch: 29960/30000, Loss: 0.00007506\n",
      "Epoch: 29970/30000, Loss: 0.00007631\n",
      "Epoch: 29980/30000, Loss: 0.00008037\n",
      "Epoch: 29990/30000, Loss: 0.00009809\n",
      "Epoch: 30000/30000, Loss: 0.00009320\n"
     ]
    }
   ],
   "source": [
    "# Create GRU instance\n",
    "gru = GRU(input_size, hidden_size, output_size)\n",
    "\n",
    "# Loss and optimizer\n",
    "criterion = nn.MSELoss()\n",
    "optimizer = torch.optim.Adam(gru.parameters(), lr=0.01)\n",
    "\n",
    "# Training loop\n",
    "for epoch in range(num_epochs):\n",
    "    # Set initial hidden state\n",
    "    hidden = torch.zeros(1, batch_size, hidden_size)\n",
    "\n",
    "    # Forward pass\n",
    "    output, hidden = gru(input_tensor, hidden)\n",
    "    loss = criterion(output, target_tensor)\n",
    "\n",
    "    # Backward and optimize\n",
    "    optimizer.zero_grad()\n",
    "    loss.backward()\n",
    "    optimizer.step()\n",
    "\n",
    "    # Print progress\n",
    "    if (epoch+1) % 10 == 0:\n",
    "        print(f'Epoch: {epoch+1}/{num_epochs}, Loss: {loss.item():.8f}')\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "fe1331ea",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([1, 1, 256])\n",
      "torch.Size([1, 40, 256])\n"
     ]
    }
   ],
   "source": [
    "print(test_tensor.shape)\n",
    "prediction_tensor = torch.zeros(1, 40, 256).float()\n",
    "print(prediction_tensor.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "043049c4",
   "metadata": {},
   "outputs": [],
   "source": [
    "with torch.no_grad():\n",
    "    hidden_pred = torch.zeros(1, batch_size, hidden_size)\n",
    "    prediction, _ = gru(test_tensor, hidden_pred)\n",
    "    prediction = prediction.view(1, 1, 256).float()\n",
    "    prediction_tensor[:, 0, :] = prediction\n",
    "    for i in range(39):\n",
    "        hidden_pred = torch.zeros(1, batch_size, hidden_size)\n",
    "        prediction, _ = gru(prediction, hidden_pred)\n",
    "        prediction = prediction.view(1, 1, 256).float()\n",
    "        prediction_tensor[:, i+1, :] = prediction"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "86c85974",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "9f361b56",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1, 256)\n",
      "(1, 201)\n",
      "(201, 256)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/data/localhome/tkapoor/.local/lib/python3.8/site-packages/numpy/ma/core.py:2820: ComplexWarning: Casting complex values to real discards the imaginary part\n",
      "  _data = np.array(data, dtype=dtype, copy=copy,\n",
      "/usr/local/lib/python3.8/dist-packages/matplotlib/contour.py:1180: ComplexWarning: Casting complex values to real discards the imaginary part\n",
      "  self.levels = np.asarray(levels_arg).astype(np.float64)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import scipy.io\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "# Load the .mat file\n",
    "mat_data = scipy.io.loadmat('NLS.mat')\n",
    "\n",
    "# Following is the code to plot the data u vs x and t. u is 256*100\n",
    "# matrix. Use first 75 columns for training and 25 for testing :)\n",
    "\n",
    "# Access the variables stored in the .mat file\n",
    "# The variable names in the .mat file become keys in the loaded dictionary\n",
    "x = mat_data['x']\n",
    "t = mat_data['tt']\n",
    "u1 = mat_data['uu']\n",
    "\n",
    "# Use the loaded variables as needed\n",
    "print(x.shape)\n",
    "print(t.shape)\n",
    "print(u.shape)\n",
    "\n",
    "X, T = np.meshgrid(x, t)\n",
    "# Define custom color levels\n",
    "c_levels = np.linspace(np.min(u1), np.max(u1), 100)\n",
    "\n",
    "# Plot the contour\n",
    "plt.figure()\n",
    "plt.figure(figsize=(15, 5))\n",
    "plt.contourf(T, X, u1.T, levels=c_levels, cmap='coolwarm')\n",
    "plt.xlabel('t')\n",
    "plt.ylabel('x')\n",
    "plt.title('Schrondinger-Equation')\n",
    "plt.colorbar()  # Add a colorbar for the contour levels\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "7b6a7ced",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(201, 256)\n",
      "(40, 256)\n",
      "Relative Error Test:  0.021859621931236514 %\n"
     ]
    }
   ],
   "source": [
    "# true solution\n",
    "h_true = np.abs(u1)\n",
    "h_true = h_true.T\n",
    "print(h_true.shape)\n",
    "\n",
    "# exact\n",
    "u_test_full = h_true[161:201, :]\n",
    "print(u_test_full.shape)\n",
    "\n",
    "# with torch.no_grad():\n",
    "#     prediction = lem(test_tensor)\n",
    "\n",
    "# prediction.shape\n",
    "\n",
    "\n",
    "k1 = (prediction_tensor - u_test_full)**2\n",
    "u_test_full_tensor = torch.tensor(u_test_full**2)\n",
    "prediction_tensor.shape\n",
    "\n",
    "# Compute the relative L2 error norm (generalization error)\n",
    "relative_error_test = torch.mean(k1)/ torch.mean(u_test_full_tensor)\n",
    "\n",
    "print(\"Relative Error Test: \", relative_error_test.item(), \"%\")\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "125d34e0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor(0.4347, dtype=torch.float64)\n"
     ]
    }
   ],
   "source": [
    "### Max error\n",
    "\n",
    "R_abs = torch.max(prediction_tensor-u_test_full)\n",
    "print(R_abs)\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7e97cb0b",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "37f09dd5",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e4c69b17",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "fdaf47fc",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Explained Variance Score: 0.9619622187208741\n"
     ]
    }
   ],
   "source": [
    "### Explained variance score\n",
    "\n",
    "import torch\n",
    "\n",
    "a = prediction_tensor\n",
    "b = u_test_full\n",
    "# Assuming 'a' is your predicted values (model's predictions) and 'b' is the true values (ground truth)\n",
    "# Make sure 'a' and 'b' are PyTorch tensors\n",
    "b = torch.tensor(b)\n",
    "# Calculate the mean of 'b'\n",
    "mean_b = torch.mean(b)\n",
    "\n",
    "# Calculate the Explained Variance Score\n",
    "numerator = torch.var(b - a)  # Variance of the differences between 'b' and 'a'\n",
    "denominator = torch.var(b)    # Variance of 'b'\n",
    "evs = 1 - numerator / denominator\n",
    "\n",
    "print(\"Explained Variance Score:\", evs.item())\n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "a4f4b74d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor(0.0756, dtype=torch.float64)\n"
     ]
    }
   ],
   "source": [
    "### Mean absolute error\n",
    "\n",
    "R_mean = torch.mean(torch.abs(prediction_tensor - u_test_full))\n",
    "print(R_mean)\n",
    "\n",
    "## t= 1.28, 1.5, 1.37\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "04ca2169",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(201, 256)"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "### snapshots\n",
    "\n",
    "prediction_tensor = torch.squeeze(prediction_tensor)\n",
    "h = np.abs(u)\n",
    "h.shape\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "1b7b57a1",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(256, 1)\n",
      "(256, 1)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import torch\n",
    "\n",
    "# Create the figure and axis objects with reduced width\n",
    "fig, ax = plt.subplots(figsize=(5, 5))  # You can adjust the width (7 inches) and height (5 inches) as needed\n",
    "\n",
    "# # Make sure the font is Times Roman\n",
    "# plt.rcParams['font.family'] = 'Times New Roman'\n",
    "\n",
    "# # Perform the prediction\n",
    "# with torch.no_grad():\n",
    "#     prediction = lem(test_tensor)\n",
    "\n",
    "final_time_output = prediction_tensor[-38, :]\n",
    "final_out = final_time_output.detach().numpy().reshape(-1, 1)\n",
    "final_true = h[-38, :].reshape(-1, 1)\n",
    "print(final_out.shape)\n",
    "print(final_true.shape)\n",
    "\n",
    "# Plot the data with red and blue lines, one with dotted and one with solid style\n",
    "ax.plot(x.T, final_out, color='red', linestyle='dotted', linewidth=12, label='Prediction')\n",
    "ax.plot(x.T, final_true, color='blue', linestyle='solid', linewidth=7, label='True')\n",
    "\n",
    "# Set the axis labels with bold font weight\n",
    "ax.set_xlabel(r\"${x}$\", fontsize=26, color='black', fontdict={'weight': 'bold'})\n",
    "ax.set_ylabel(r\"${|u(x, t)|}$\", fontsize=26, color='black', fontdict={'weight': 'bold'})\n",
    "\n",
    "# Set the title with bold font weight\n",
    "ax.set_title(r\"${t = 1.28}$\", fontsize=26, color='black', fontweight='bold')\n",
    "\n",
    "# Set the number of ticks for x-axis and y-axis to 3\n",
    "ax.set_xticks([-5, 0, 5])\n",
    "ax.set_yticks([0, 2, 4])\n",
    "\n",
    "# Set tick labels fontweight to bold and increase font size\n",
    "ax.tick_params(axis='both', which='major', labelsize=20, width=2, length=10)\n",
    "\n",
    "# # Set the fontweight for tick labels to bold\n",
    "# for tick in ax.get_xticklabels() + ax.get_yticklabels():\n",
    "#     tick.set_weight('bold')\n",
    "\n",
    "# Set the spines linewidth to bold\n",
    "ax.spines['top'].set_linewidth(2)\n",
    "ax.spines['right'].set_linewidth(2)\n",
    "ax.spines['bottom'].set_linewidth(2)\n",
    "ax.spines['left'].set_linewidth(2)\n",
    "\n",
    "\n",
    "# Increase font size for x and y axis numbers\n",
    "ax.tick_params(axis='both', which='major', labelsize=24)\n",
    "\n",
    "# Set the legend\n",
    "# ax.legend()\n",
    "\n",
    "plt.savefig('GRU_1.28_20.pdf', dpi=500, bbox_inches=\"tight\")\n",
    "\n",
    "# Show the plot\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "a51774c0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(256, 1)\n",
      "(256, 1)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import torch\n",
    "\n",
    "# Create the figure and axis objects with reduced width\n",
    "fig, ax = plt.subplots(figsize=(5, 5))  # You can adjust the width (7 inches) and height (5 inches) as needed\n",
    "\n",
    "# # Make sure the font is Times Roman\n",
    "# plt.rcParams['font.family'] = 'Times New Roman'\n",
    "\n",
    "# # Perform the prediction\n",
    "# with torch.no_grad():\n",
    "#     prediction = lem(test_tensor)\n",
    "\n",
    "\n",
    "final_time_output = prediction_tensor[-3, :]\n",
    "final_out = final_time_output.detach().numpy().reshape(-1, 1)\n",
    "final_true = h[-3, :].reshape(-1, 1)\n",
    "print(final_out.shape)\n",
    "print(final_true.shape)\n",
    "\n",
    "# Plot the data with red and blue lines, one with dotted and one with solid style\n",
    "ax.plot(x.T, final_out, color='red', linestyle='dotted', linewidth=12, label='Prediction')\n",
    "ax.plot(x.T, final_true, color='blue', linestyle='solid', linewidth=7, label='True')\n",
    "\n",
    "# Set the axis labels with bold font weight\n",
    "ax.set_xlabel(r\"${x}$\", fontsize=26, color='black', fontdict={'weight': 'bold'})\n",
    "ax.set_ylabel(r\"${u(x, t)}$\", fontsize=26, color='black', fontdict={'weight': 'bold'})\n",
    "\n",
    "# Set the title with bold font weight\n",
    "ax.set_title(r\"${t = 1.5}$\", fontsize=26, color='black', fontweight='bold')\n",
    "\n",
    "# Set the number of ticks for x-axis and y-axis to 3\n",
    "ax.set_xticks([-5, 0, 5])\n",
    "ax.set_yticks([0, 2, 4])\n",
    "\n",
    "# Set tick labels fontweight to bold and increase font size\n",
    "ax.tick_params(axis='both', which='major', labelsize=20, width=2, length=10)\n",
    "\n",
    "# # Set the fontweight for tick labels to bold\n",
    "# for tick in ax.get_xticklabels() + ax.get_yticklabels():\n",
    "#     tick.set_weight('bold')\n",
    "\n",
    "# Set the spines linewidth to bold\n",
    "ax.spines['top'].set_linewidth(2)\n",
    "ax.spines['right'].set_linewidth(2)\n",
    "ax.spines['bottom'].set_linewidth(2)\n",
    "ax.spines['left'].set_linewidth(2)\n",
    "\n",
    "\n",
    "# Increase font size for x and y axis numbers\n",
    "ax.tick_params(axis='both', which='major', labelsize=24)\n",
    "\n",
    "# Set the legend\n",
    "# ax.legend()\n",
    "\n",
    "plt.savefig('GRU_1.5_20.pdf', dpi=500, bbox_inches=\"tight\")\n",
    "\n",
    "# Show the plot\n",
    "plt.show()\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "670228bf",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "### 80-20 contour plot\n",
    "\n",
    "conc_u = torch.squeeze(input_tensor)\n",
    "\n",
    "concatenated_tensor = torch.cat((conc_u, prediction_tensor), dim=0)\n",
    "\n",
    "t1 = np.linspace(0, 1.5707 , 200)\n",
    "\n",
    "import torch\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib.ticker import FixedLocator\n",
    "\n",
    "# Assuming you have defined concatenated_tensor as a PyTorch tensor\n",
    "# concatenated_tensor = torch.cat((tensor1, tensor2), dim=0)\n",
    "\n",
    "# Convert concatenated_tensor to a NumPy array\n",
    "concatenated_array = concatenated_tensor.numpy()\n",
    "\n",
    "# Define custom color levels\n",
    "x = np.linspace(-5, 5, concatenated_array.shape[1])  # Replace 0 and 1 with your actual x range\n",
    "t = np.linspace(0, 1.57, concatenated_array.shape[0])  # Replace 0 and 1 with your actual t range\n",
    "X, T = np.meshgrid(x, t1)\n",
    "\n",
    "# Define custom color levels using the minimum and maximum from the NumPy array\n",
    "c_levels = np.linspace(np.min(concatenated_array), np.max(concatenated_array), 400)\n",
    "\n",
    "# Plot the contour with interpolated data\n",
    "plt.figure(figsize=(20, 5))\n",
    "plt.pcolormesh(T, X, concatenated_array, shading='auto', cmap='twilight')\n",
    "\n",
    "# Set the fontweight for axis labels to regular (not bold)\n",
    "plt.xlabel(\"$t$\", fontsize=26)\n",
    "plt.ylabel(\"$x$\", fontsize=26)\n",
    "plt.title(\"$|u(x, t)|$\", fontsize=26)\n",
    "\n",
    "# Set tick labels fontweight to regular (not bold) and increase font size\n",
    "plt.tick_params(axis='both', which='major', labelsize=20, width=3, length=10)\n",
    "\n",
    "# Set the fontweight for tick labels to regular (not bold)\n",
    "for tick in plt.gca().get_xticklabels() + plt.gca().get_yticklabels():\n",
    "    tick.set_weight('normal')\n",
    "\n",
    "# Set the number of ticks for x-axis and y-axis to 5\n",
    "num_ticks = 5\n",
    "x_ticks = np.linspace(np.min(T), np.max(T), num_ticks)\n",
    "y_ticks = np.linspace(np.min(X), np.max(X), num_ticks)\n",
    "\n",
    "plt.gca().xaxis.set_major_locator(FixedLocator(x_ticks))\n",
    "plt.gca().yaxis.set_major_locator(FixedLocator(y_ticks))\n",
    "\n",
    "cbar1 = plt.colorbar()\n",
    "# Set the number of ticks for the color bar with uniformly distributed numbers\n",
    "num_ticks = 5\n",
    "c_ticks = np.linspace(np.min(concatenated_array), np.max(concatenated_array), num_ticks)\n",
    "cbar1.set_ticks(c_ticks)\n",
    "\n",
    "# Set the fontweight and fontsize for color bar tick labels\n",
    "for t in cbar1.ax.get_yticklabels():\n",
    "    t.set_weight('normal')\n",
    "    t.set_fontsize(26)  # Increase the font size for color bar tick labels\n",
    "\n",
    "# Increase the size of numbers on axis and color bar\n",
    "plt.xticks(fontsize=26)\n",
    "plt.yticks(fontsize=26)\n",
    "\n",
    "# Increase the tick size and width of the color bar\n",
    "cbar1.ax.tick_params(axis='both', which='major', labelsize=30, width=3,  length=10)\n",
    "\n",
    "# Add a dotted line at t = 0.8\n",
    "plt.axvline(x=1.26449, color='black', linestyle='dotted', linewidth=5)\n",
    "\n",
    "#plt.savefig('Contour_LEM_20.pdf', dpi=500, bbox_inches=\"tight\")\n",
    "plt.savefig('contour_GRU_20.jpeg', dpi=500, bbox_inches=\"tight\")\n",
    "# Show the plot\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e8b48c55",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4ba80a0f",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "12d7d2b2",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "pytorch",
   "language": "python",
   "name": "pytorch"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
